এর ব্যবহার Γ
বিল্ট-ইন-এর প্রধান ব্যবহার Γ, তালিকাগুলি বা তালিকার ডিকনস্ট্রাকশনগুলির সাথে প্যাটার্ন ম্যাচিং হিসাবে পরিচিত , একটি তালিকাকে একটি মাথা এবং লেজকে বিভক্ত করা এবং তাদের উপর একটি বাইনারি ফাংশন প্রয়োগ করা। এটি হাস্কেল প্যাটার্নের সাথে মিলে যাওয়া আইডিয়মের সাথে মিল রয়েছে
f (x : xs) = <something>
f [] = <something else>
যেখানে <something>সম্পর্কে একটি অভিব্যক্তি x, xsএবং সম্ভবত f। এখানে 4 টি ওভারলোডিং রয়েছে Γযার প্রতিটিতে কিছুটা ভিন্নভাবে কাজ করা হয়।
list
প্রথম ওভারলোডিং, listএকটি মান aএবং একটি বাইনারি ফাংশন নেয় f। এটি একটি নতুন ফাংশন ফিরিয়ে দেয় যা একটি তালিকা গ্রহণ করে, aখালি থাকলে ফিরে আসে এবং fমাথা এবং লেজকে কল দেয় যদি এটি কিছু না হয়। উদাহরণস্বরূপ, Γ_1€একটি তালিকা নেয়, -1এটি খালি হলে প্রত্যাবর্তন করে , এবং পুচ্ছের মধ্যে প্রথম উপাদানটির প্রথম উপস্থিতির সূচক না হলে।
listN
বাদ দেওয়া এবং রিটার্ন টাইপের ডিফল্ট মান পরিবর্তে ব্যবহৃত হয় বাদে দ্বিতীয় ওভারলোডিংয়ের listNসমান is উদাহরণস্বরূপ, এটির সমতুল্য , যেহেতু ডিফল্ট সংখ্যার মান হয় ।listaΓ€Γ0€0
অনুশীলনে, এর listNচেয়ে বেশি ব্যবহৃত হয় list, যেহেতু ডিফল্ট মান হয় অপ্রাসঙ্গিক বা হুবহু আপনার যা প্রয়োজন। একটি সাধারণ প্যাটার্নটি হল Γ~αβγ, যেখানে αβγতিনটি ফাংশন রয়েছে; βএটি প্রথম উপাদান এবং γলেজের ক্ষেত্রে প্রযোজ্য এবং ফলাফলগুলি একত্রিত করে α। এটি উত্তর হিসাবে উদাহরণস্বরূপ ব্যবহৃত হয়েছিল । অন্যান্য নিদর্শন অন্তর্ভুক্ত Γo:αআবেদন করার জন্য αশুধুমাত্র প্রথম উপাদান, এবং Γ·:mαআবেদন করার জন্য αপ্রথম ছাড়া সমস্ত উপাদান। উত্তরটি উত্তরটিতে ব্যবহৃত হয়েছিল ।
listF
তৃতীয় ওভারলোডিং কিছুটা বেশি জড়িত। যেমন list, এটি একটি মান aএবং একটি ফাংশন নেয় fএবং একটি নতুন ফাংশন দেয় gযা একটি তালিকা গ্রহণ করে। যাইহোক, এই সময়টি fএকটি অতিরিক্ত ফাংশন আর্গুমেন্ট গ্রহণ করে, যা gনিজেই এটি এবং এটি যেকোন মূল্যে কল করতে পারে (ইনপুট তালিকার পুচ্ছ সহ, তবে সীমাবদ্ধ নয়)। এর অর্থ হল তালিকায় listFএকটি সাধারণ পুনরাবৃত্তি স্কিম প্রয়োগ করে।
listFখুব প্রায়ই ব্যবহার করা হয় না, যেহেতু list/ এর সাথে স্পষ্ট পুনরাবৃত্তি listNসাধারণত একই দৈর্ঘ্য বা সংক্ষিপ্ত হয়, যেমন এই উত্তরে ।
listNF
listNFযা যা listFতা listNহ'ল list: ইনপুট aবাদ দেওয়া হয় এবং তার পরিবর্তে প্রত্যাবর্তনের ধরণের ডিফল্ট মান ব্যবহৃত হয়। বিরল পরিস্থিতিতে, এটি একটি ডান ভাঁজ থেকে কম হতে পারে, উদাহরণস্বরূপ এই উত্তরে ।
এর পুনরাবৃত্ত সংস্করণগুলির উদাহরণ হিসাবে Γ, ফাংশনটি Γλ·:o⁰↔প্রথমে, শেষ, দ্বিতীয়, দ্বিতীয় থেকে শেষ, তৃতীয়, তৃতীয়-থেকে-শেষ, এবং ক্রমের তালিকায় একটি তালিকাটিকে বদলে দেয়।
এটি অনলাইন চেষ্টা করুন!
ফাংশনটি fহ'ল সুস্পষ্ট ল্যাম্বদা λ·:o⁰↔, যার যুক্তি ⁰পুরো ফাংশন। কি fকরে সঙ্গে লেজ বিপরীত হয় ↔, তবে প্রধান ফাংশন সঙ্গে যাও recursively কল o⁰, এবং পরিশেষে সঙ্গে মাথা পিছনে কর্মপ্রণালী ·:। অবশ্যই, Γ·:o₀↔এটি একটি বাইট সংক্ষিপ্ত, তবে লাইনে এই ফাংশনটি ছাড়া অন্য কিছু রয়েছে তবে কাজ করে না।