আমি প্রতিদিন ফাংশনাল প্রোগ্রামিংয়ের নিবন্ধগুলি পড়ছি এবং যথাসম্ভব কিছু অনুশীলন প্রয়োগ করার চেষ্টা করছি। তবে আমি বুঝতে পারি না কারী বা আংশিক প্রয়োগে অনন্য কী।
এই গ্রোভি কোডটি উদাহরণ হিসাবে নিন:
def mul = { a, b -> a * b }
def tripler1 = mul.curry(3)
def tripler2 = { mul(3, it) }
আমি বুঝতে পারছি না tripler1
এবং এর মধ্যে পার্থক্য কী tripler2
। তারা দুজন কি এক নয়? 'কারিটিং' খাঁটি বা আংশিক কার্যকরী ভাষায় যেমন গ্রোভি, স্কেলা, হাস্কেল ইত্যাদিতে সমর্থিত তবে আমি একই জিনিস (বাম-তরকারী, ডান-তরকারী, এন-কারি বা আংশিক প্রয়োগ) কেবল অন্য নাম বা বেনাম তৈরি করে করতে পারি ফাংশন বা সমাপ্তি যা tripler2
বেশিরভাগ ভাষায় (এমনকি সি।) মূল ফাংশনে (যেমন ) পরামিতিগুলি ফরোয়ার্ড করে দেবে
আমি কি এখানে কিছু মিস করছি? আমি আমার গ্রিল অ্যাপ্লিকেশনগুলিতে কারিঙ এবং আংশিক অ্যাপ্লিকেশন ব্যবহার করতে পারি এমন জায়গাগুলি রয়েছে তবে আমি তা করতে দ্বিধা বোধ করছি কারণ আমি নিজেকে জিজ্ঞাসা করছি "এটি কীভাবে আলাদা?"
আমাকে আলোকিত করুন।
সম্পাদনা: আপনি কি বলছেন যে আংশিক অ্যাপ্লিকেশন / কারি করানো অন্য ফাংশনটি তৈরি / কল করার চেয়ে কেবল আরও কার্যকর যা ডিফল্ট পরামিতিগুলিকে মূল ফাংশনে ফরোয়ার্ড করে?
f x y = x + y
মানে এটি f
এমন একটি ফাংশন যা একটি ইনট প্যারামিটার নেয়। f x
( f
প্রয়োগ করা হয় x
) এর ফলাফলটি এমন একটি ফাংশন যা একটি ইনট প্যারামিটার নেয়। ফলাফল f x y
(বা (f x) y
, অর্থাৎ f x
প্রয়োগ করা y
) এমন একটি অভিব্যক্তি যা কোনও ইনপুট পরামিতি নেয় না এবং হ্রাস করে মূল্যায়ন করা হয় x + y
।