Elixir কোড BEAM ভার্চুয়াল মেশিনে রান করে। BEAM হলো Erlang রান-টাইম সিস্টেমের একটি অংশ। Erlang দ্বারা অনুপ্রাণিত হয়ে এবং তার রান এনভায়রনমেন্ট ভাগ করে নেওয়ায়, Elixir Erlang লাইব্রেরিগুলোর সাথে চমৎকার ইন্টারঅপারেবিলিটি প্রদান করে। এর মানে হলো, Elixir ডেভেলপাররা তাদের Elixir কোডের ভেতর থেকেই Erlang লাইব্রেরি ব্যবহার করতে পারেন। প্রকৃতপক্ষে, Erlang লাইব্রেরি ইতিমধ্যেই যে কার্যকারিতা দেয়, তার জন্য Elixir লাইব্রেরি লেখাকে Elixir কমিউনিটি নিরুৎসাহিত করে।
ফলস্বরূপ, গাণিতিক অপারেশন বা টাইমার ফাংশনের মতো কিছু কার্যকারিতা Elixir-এ কেবল Erlang-এর মাধ্যমেই পাওয়া যায়।
Elixir আর Erlang-এর এই ঘনিষ্ঠ সম্পর্কের মানে হলো, একজন দক্ষ Elixir ডেভেলপার হতে হলে আপনি হয়তো Erlang-এর মৌলিক সিনট্যাক্স শিখতে কিছুটা সময় ব্যয় করতে চাইবেন।
বাড়তি কোনো ধাপ ছাড়াই Erlang-এর স্ট্যান্ডার্ড লাইব্রেরি আমাদের Elixir কোডে ব্যবহার করা যায়।
আমরা Elixir ফাংশন যেভাবে কল করি, ঠিক সেভাবেই Erlang ফাংশন কল করা যায়, তবে একটি ছোট পার্থক্য আছে। Erlang মডিউলের নাম হয় snake_case অ্যাটম। উদাহরণস্বরূপ, math মডিউল থেকে Erlang-এর pi/0 ফাংশনটি কল করতে হলে এভাবে লিখতে হবে:
:math.pi()
# => 3.141592653589793
সবচেয়ে বেশি ব্যবহৃত Erlang মডিউলগুলো এমন কার্যকারিতা দেয় যা Elixir-এর স্ট্যান্ডার্ড লাইব্রেরিতে নেই। সেগুলো হলো:
timer মডিউল, যা sleep/1, send_after/2 এবং send_interval/2-এর মতো ফাংশন দেয়।rand মডিউল, যা uniform/0, normal/0 এবং seed/2-এর মতো ফাংশন দেয়।:io_lib.format/2, যা C-স্টাইলের স্ট্রিং ফরম্যাটিং দেয় (কন্ট্রোল সিকোয়েন্স ব্যবহার করে)।math মডিউল, যা sin/1, cos/1, log2/1, log10/1, pow/2 ইত্যাদির মতো গাণিতিক ফাংশন দেয়।queue মডিউল, যা একটি কিউ ডেটা স্ট্রাকচার দেয়।crypto মডিউল, যা ক্রিপ্টোগ্রাফিক ফাংশন দেয়।zip মডিউল, যা জিপ আর্কাইভ নিয়ে কাজ করার ফাংশন দেয়।calendar মডিউল, যা তারিখ ও সময় নিয়ে কাজ করার ফাংশন দেয়, যেমন iso_week_number/1। কোনো Erlang ফাংশনে একটি Date, Time বা NaiveDateTime স্ট্রাক্ট পাঠাতে হলে, সংশ্লিষ্ট মডিউলের to_erl ফাংশন দিয়ে সেটিকে Erlang ফরম্যাটে বদলাতে হবে।Erlang-এর স্ট্যান্ডার্ড লাইব্রেরি সম্পর্কে জানতে, STDLIB Reference Manual দেখুন।
Erlang লাইব্রেরির সাথে Elixir-এর ইন্টারঅপারেবিলিটি কেবল Erlang-এর স্ট্যান্ডার্ড লাইব্রেরিতে সীমাবদ্ধ নয়। যেকোনো Erlang লাইব্রেরি Elixir কোডে ব্যবহার করা যায়।