এটি আরও গাণিতিক উপায়ে বলে মনে হচ্ছে
ক্রিয়ামূলক ভাষা ল্যাম্বদা ক্যালকুলাস দ্বারা অনুপ্রাণিত হয় । এই ক্ষেত্রে, বন্ধনীগুলি ফাংশন অ্যাপ্লিকেশনের জন্য ব্যবহৃত হয় না।
আমি আরও মনে করি যে পরের শৈলীটি প্যারেন্স ছাড়াই অনেক বেশি স্পষ্ট এবং পঠনযোগ্য।
পাঠযোগ্যতা দর্শকের চোখে পড়ে। আপনি এটি পড়তে অভ্যস্ত না। এটি কিছুটা গাণিতিক অপারেটরগুলির মতো। যদি আপনি সাহচর্যতা বোঝেন তবে আপনার অভিব্যক্তিটির কাঠামো পরিষ্কার করার জন্য আপনার কয়েকটি প্যারেন দরকার। প্রায়শই আপনার এগুলির দরকার হয় না।
এই কনভেনশনটি ব্যবহার করার জন্য কারি করাও একটি ভাল কারণ। হাসকেলে আপনি নিম্নলিখিতটি সংজ্ঞায়িত করতে পারেন:
add :: Int -> Int -> Int
add x y = x + y
x = add 5 6 -- x == 11
f = add 5
y = f 6 -- y == 11
z = ((add 5) 6) -- explicit parentheses; z == 11
পেরেনগুলির সাথে, আপনি দুটি কনভেনশন ব্যবহার করতে পারেন: f(5, 6)
(ত্রিযুক্ত নয়) বা f(5)(6)
(ত্রিযুক্ত)। হ্যাশেল সিনট্যাক্স কারীকরণ ধারণার অভ্যস্ত হতে সহায়তা করে। আপনি এখনও একটি অ-ত্রিযুক্ত সংস্করণ ব্যবহার করতে পারেন তবে এটি সংযুক্তকারীগুলির সাথে ব্যবহার করা আরও বেদনাদায়ক
add' :: (Int, Int) -> Int
add' (x, y) = x + y
u = add'(5, 6) -- just like other languages
l = [1, 2, 3]
l1 = map (add 5) l -- [6, 7, 8]
l2 = map (\x -> add'(5, x)) l -- like other languages
লক্ষ্য করুন দ্বিতীয় সংস্করণটি আপনাকে x কে কীভাবে ভেরিয়েবল হিসাবে নিবন্ধিত করতে বাধ্য করে এবং subexpression এমন একটি ফাংশন যা একটি পূর্ণসংখ্যা নেয় এবং এতে 5 যোগ করে? তরকারিযুক্ত সংস্করণটি অনেক হালকা, তবে এটি আরও পাঠযোগ্য হিসাবে বিবেচিত।
হাস্কেল প্রোগ্রামগুলি বিমূর্ততা সংজ্ঞায়িত এবং রচনার মাধ্যম হিসাবে আংশিক প্রয়োগ এবং সংযোজকগুলির ব্যাপক ব্যবহার করে, সুতরাং এটি খেলনার উদাহরণ নয়। একটি ভাল ফাংশন ইন্টারফেস এমন এক হবে যেখানে প্যারামিটারের ক্রমটি একটি বন্ধুত্বপূর্ণ তরল ব্যবহার করে।
আরেকটি বিষয়: প্যারামিটার ব্যতীত একটি ফাংশনটি কল করা উচিত f()
। হ্যাশকেলে, যেহেতু আপনি কেবলমাত্র অবিরাম অলস মূল্যায়নকৃত মানগুলি পরিচালনা করেন, আপনি কেবল এটি লিখেন f
এবং এটি একটি মান হিসাবে বিবেচনা করেন যা প্রয়োজনের সময় কিছু গণনা সম্পাদন করতে হবে। যেহেতু এর মূল্যায়নের কোনও পার্শ্ব প্রতিক্রিয়া থাকবে না, তাই এটি প্যারামিটারলেস ফাংশন এবং তার প্রত্যাবর্তিত মানের জন্য আলাদা স্বীকৃতি বোধ করে না।
ফাংশন আবেদনের জন্য অন্যান্য কনভেনশন রয়েছে:
- লিস্প: (এফএক্স) - বাহ্যিক বন্ধনীগুলির সাথে উপসর্গ
- চতুর্থ: এক্সএফ - পোস্টফিক্স