অ্যানোনিমাস ফাংশন এলিক্সিরের সর্বত্রই ব্যবহৃত হয়, কখনও নিজে নিজে, কখনও রিটার্ন ভ্যালু হিসেবে, আবার কখনও 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