توابع بینام در سراسر الیکسیر بهطور معمول بهتنهایی، بهعنوان مقدار بازگشتی، و بهعنوان آرگومان در توابع مرتبه بالاتر مانند Enum.map/2 به کار میروند:
Enum.map([1, 2, 3], fn n -> n + 1 end)
# => [2, 3, 4]
با توابع در الیکسیر مانند شهروندان درجهیک رفتار میشود:
توابع بینام با کلیدواژهی fn ساخته و با یک نقطه (.) فراخوانی میشوند:
function_variable = fn n -> n + 1 end
function_variable.(1)
# => 2
توابع بینام را میتوان با نحو اختصاری ضبط & هم ساخت.
& ابتدایی، آغاز عبارت ضبط را اعلام میکند.
&1، &2 و به همین ترتیب به آرگومانهای موقعیتی تابع بینام اشاره میکنند.
# Instead of:
fn x, y -> abs(x) + abs(y) end
# We can write:
&(abs(&1) + abs(&2))
از عملگر ضبط & میتوان برای ضبط یک تابع نامدار موجود هم استفاده کرد:
# Instead of:
fn a, b -> a <= b end
# We can capture the function using its name and arity:
&<=/2
توابع بینام در الیکسیر «بستار» هستند. آنها میتوانند به متغیرهایی دسترسی داشته باشند که هنگام تعریف تابع در محدوده قرار دارند. متغیرهایی که داخل یک تابع بینام مقدار میگیرند، از بیرون آن قابل دسترسی نیستند:
y = 2
square = fn ->
x = 3
x * y
end
square.()
# => 6
x
# => ** (CompileError): undefined function x/0