তারা আলাদা।
প্রথম শ্রেণির কাজ
কোনও ভাষার মূল্যবোধগুলি যেগুলি জুড়ে অভিন্নভাবে পরিচালিত হয় তাকে "প্রথম শ্রেণি" বলা হয়। এগুলি ডেটা স্ট্রাকচারে সংরক্ষণ করা হতে পারে, আর্গুমেন্ট হিসাবে পাস করা হয়েছে বা নিয়ন্ত্রণ কাঠামোগুলিতে ব্যবহৃত হতে পারে।
যে ভাষাগুলি ফাংশনের ধরণের সাথে মানগুলিকে সমর্থন করে এবং তাদেরকে অ-ফাংশন মানগুলির মতো একই আচরণ করে, তাদের "প্রথম শ্রেণির ফাংশন" বলা যেতে পারে।
উচ্চতর ক্রিয়াকলাপ
প্রথম শ্রেণীর ফাংশনগুলির একটি পরিণতি হ'ল আপনার অন্য ফাংশনের যুক্তি হিসাবে কোনও ফাংশনটি পাস করতে সক্ষম হওয়া উচিত। পরবর্তী কার্যটি এখন "উচ্চতর আদেশ"। এটি একটি ফাংশন যা একটি ফাংশনকে আর্গুমেন্ট হিসাবে গ্রহণ করে।
ক্যানোনিকাল উদাহরণ "মানচিত্র"
map :: (a -> b) -> [a] -> [b]
map f [] = []
map f (x:xs) = f x : map f xs
অর্থাৎ এটি একটি ফাংশন এবং একটি অ্যারে নেয় এবং প্রতিটি উপাদানগুলিতে প্রয়োগ করা ফাংশন সহ একটি নতুন অ্যারে প্রদান করে।
কার্যকরী ভাষা - ভাষা যেখানে ফাংশনগুলি বিল্ডিং প্রোগ্রামগুলির প্রাথমিক মাধ্যম - সমস্তই প্রথম শ্রেণির ফাংশন রয়েছে। বেশিরভাগের উচ্চতর অর্ডার ফাংশনও রয়েছে (এক্সেলের মতো ভাষা হওয়া খুব বিরল ব্যতিক্রম, যা কার্যকরী বলা যেতে পারে, তবে উচ্চতর অর্ডার নয়)।