अनाम फंक्शन का इस्तेमाल Elixir में अकेले भी खूब होता है, रिटर्न वैल्यू के रूप में भी, और Enum.map/2 जैसे हायर ऑर्डर फंक्शन के आर्गुमेंट के रूप में भी:
Enum.map([1, 2, 3], fn n -> n + 1 end)
# => [2, 3, 4]
Elixir में फंक्शन को प्रथम श्रेणी का दर्जा दिया जाता है:
अनाम फंक्शन 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
Elixir में अनाम फंक्शन क्लोज़र होते हैं। फंक्शन बनाते समय जो वेरिएबल स्कोप में होते हैं, ये उन्हें इस्तेमाल कर सकते हैं। अनाम फंक्शन के अंदर असाइन किए गए वेरिएबल उसके बाहर इस्तेमाल नहीं किए जा सकते:
y = 2
square = fn ->
x = 3
x * y
end
square.()
# => 6
x
# => ** (CompileError): undefined function x/0