সংক্ষিপ্ততম উপায়টি কী আমরা ফাংশনটি প্রকাশ করতে পারি
f(a,b)(c,d)=(a+c,b+d)
বিন্দু মুক্ত স্বরলিপি?
pointfree.io আমাদের দেয়
uncurry (flip flip snd . (ap .) . flip flip fst . ((.) .) . (. (+)) . flip . (((.) . (,)) .) . (+))
যা সামান্য বিট কাজের সাথে সংক্ষিপ্ত করা যেতে পারে
uncurry$(`flip`snd).((<*>).).(`flip`fst).((.).).(.(+)).flip.(((.).(,)).).(+)
76 বাইট জন্য। কিন্তু এই এখনও মনে হয় সত্যিই দীর্ঘ এবং জটিল যেমন একটি সহজ কাজের জন্য। একটি সংক্ষিপ্ত বিন্দু মুক্ত ফাংশন হিসাবে আমরা যুক্ত করে যুক্ত করার উপায় আছে কি?
বিন্দু মুক্ত বলতে আমি কী বোঝাতে চাই তা স্পষ্ট করে ফাংশনটির পয়েন্ট-ফ্রি ঘোষণার মধ্যে বিদ্যমান ফাংশন এবং অপারেটরদের গ্রহণ এবং একে অপরের সাথে এমনভাবে প্রয়োগ করা হয় যাতে কাঙ্ক্ষিত ফাংশনটি তৈরি হয়। ব্যাকটিক, প্রথম বন্ধনী এবং আক্ষরিক মান ( []
, 0
, [1..3]
, ইত্যাদি) অনুমতি দেওয়া হয় কিন্তু মত কীওয়ার্ড where
এবং let
নয়। এর অর্থ:
আপনি কোনও ভেরিয়েবল / ফাংশন বরাদ্দ করতে পারেন না
আপনি ল্যাম্বডাস ব্যবহার করতে পারেন না
আপনি আমদানি নাও করতে পারেন
(+)***(+)
।
(+)<$>([1],2)<*>([3],4)
দেয় ([1,3],6)
।