Erlang এ Named Functions এবং Anonymous Functions
Erlang এ ফাংশন দুটি প্রধান শ্রেণিতে ভাগ করা যায়: Named Functions এবং Anonymous Functions। প্রতিটি ফাংশন ব্যবহৃত হয় নির্দিষ্ট কাজ সম্পাদন করতে, তবে তাদের সংজ্ঞা এবং ব্যবহার পদ্ধতিতে পার্থক্য রয়েছে।
1. Named Functions
Named Functions হল সাধারণ ফাংশন যেগুলি মডিউল বা কোডের একটি অংশ হিসেবে নির্দিষ্ট নাম দিয়ে ডিফাইন করা হয়। এই ফাংশনগুলো অন্যান্য কোড অংশ বা মডিউল থেকে কল করা যেতে পারে। Named Functions সাধারণত ফাংশনের নাম এবং আর্গুমেন্টের সংখ্যা দিয়ে এক্সপোর্ট করা হয়, এবং এই ফাংশনগুলির মাধ্যমে নির্দিষ্ট কাজ সম্পাদন করা হয়।
Named Functions এর সিনট্যাক্স:
-module(module_name).
-export([function_name/arity]).
function_name(Arg1, Arg2) ->
Expression.-module(module_name).: এটি মডিউল নামের ঘোষণা।-export([function_name/arity]).: এটি মডিউলটি বাইরের কোড থেকেfunction_name/arityফাংশনটিকে এক্সপোর্ট করতে দেয়।function_name(Arg1, Arg2) ->: ফাংশনটির নাম এবং আর্গুমেন্ট ঘোষণা।Expression.: ফাংশনের কার্যক্রম বা লজিক।
উদাহরণ:
-module(calculator).
-export([add/2, subtract/2]).
add(X, Y) -> X + Y.
subtract(X, Y) -> X - Y.এখানে:
add/2এবংsubtract/2দুটি Named Function, যেখানে2তাদের আর্গুমেন্টের সংখ্যা নির্দেশ করে।add/2দুটি আর্গুমেন্ট নিয়ে দুটি সংখ্যা যোগ করে এবংsubtract/2দুটি সংখ্যা বিয়োগ করে।
ফাংশন কল:
calculator:add(3, 5). %% আউটপুট হবে 8
calculator:subtract(10, 4). %% আউটপুট হবে 62. Anonymous Functions
Anonymous Functions হল এমন ফাংশন যেগুলির কোনো নাম থাকে না, এবং এগুলি সাধারণত lambda functions বা function literals হিসেবেও পরিচিত। এগুলি একটি এক্সপ্রেশন হিসেবে ডিফাইন করা হয় এবং প্রয়োজনের সময় একবার ব্যবহার করা হয়। Anonymous Functions বিশেষ করে যখন আপনি একটি নির্দিষ্ট কাজের জন্য একটি ছোট ফাংশন তৈরি করতে চান, তখন ব্যবহৃত হয়।
Anonymous Functions এর সিনট্যাক্স:
Fun = fun(Arg1, Arg2) -> Expression end.fun(Arg1, Arg2) ->: এই অংশে আর্গুমেন্ট এবং ফাংশন ডেফিনিশন শুরু হয়।Expression end.: এখানে ফাংশনের কার্যকরী অংশ শেষ হয়।
উদাহরণ:
Fun = fun(X, Y) -> X + Y end.এখানে, Fun একটি Anonymous Function যা দুটি আর্গুমেন্ট নেয় এবং তাদের যোগফল রিটার্ন করে।
ফাংশন কল:
Fun(3, 5). %% আউটপুট হবে 8Anonymous Functions সহ List Operation:
Anonymous Functions সাধারণত লিস্ট অপারেশন বা ফাংশনাল প্রোগ্রামিং এ ব্যবহার করা হয়।
List = [1, 2, 3, 4],
Square = fun(X) -> X * X end,
lists:map(Square, List).এখানে:
lists:map(Square, List)লিস্টের প্রতিটি উপাদানেSquareফাংশন প্রয়োগ করে। ফলস্বরূপ, এটি[1, 4, 9, 16]রিটার্ন করবে।
3. Named Functions vs Anonymous Functions
| বৈশিষ্ট্য | Named Functions | Anonymous Functions |
|---|---|---|
| সংজ্ঞা | মডিউলে নাম সহ ডিফাইন করা হয়। | একটি এক্সপ্রেশন হিসেবে নির্দিষ্ট নাম ছাড়াই ডিফাইন করা হয়। |
| ব্যবহার | সাধারণত মডিউল ফাংশন হিসেবে ব্যবহৃত হয়। | একবারের জন্য ছোট কাজের জন্য ব্যবহার করা হয়। |
| নাম | ফাংশনটির একটি নাম থাকে যা বাইরে থেকে এক্সপোর্ট করা যায়। | ফাংশনটির কোনো নাম থাকে না। |
| অধিকার | বাইরের কোড থেকে এক্সপোর্ট করা যায়। | সাধারণত শুধুমাত্র যেখানে সংজ্ঞায়িত সেখানে ব্যবহার করা হয়। |
| পারফরম্যান্স | প্রোগ্রামে দীর্ঘস্থায়ী ফাংশন তৈরি করার জন্য উপযুক্ত। | ছোট, অস্থায়ী এবং একাধিক কাজের জন্য দ্রুত তৈরি করা যায়। |
| বিভিন্ন শাখায় ব্যবহৃত | অন্যান্য মডিউল বা কোড অংশে এক্সপোর্ট করে ব্যবহার করা যায়। | সাধারণত একবারের জন্য ব্যবহৃত হয়। |
উপসংহার
- Named Functions হল ফাংশন যেগুলির একটি নাম থাকে এবং এগুলি অন্যান্য মডিউল বা কোড অংশ থেকে এক্সপোর্ট করা যায়। এগুলি সাধারণত বৃহত্তর প্রোগ্রামগুলিতে ব্যবহৃত হয়।
- Anonymous Functions নামহীন এবং সাধারণত ছোট, এককালীন কার্যক্রমের জন্য ব্যবহৃত হয়। এগুলি বিশেষ করে higher-order functions এর সাথে ব্যবহার করা হয়, যেমন লিস্ট ম্যানিপুলেশন, ম্যাপিং ইত্যাদি।
Erlang-এ ফাংশনাল প্রোগ্রামিংয়ের ক্ষেত্রে Named Functions এবং Anonymous Functions দুটোই গুরুত্বপূর্ণ ভূমিকা পালন করে এবং যথাযথ পরিস্থিতিতে ব্যবহার করা হয়।
Read more