আপনি এটি প্রোগ্রাম! গির্জার এনকোডিংগুলি একবার দেখুন । আপনি দেখতে পাচ্ছেন যে সমস্ত গাণিতিক সম্পাদন করা যায় যা সম্ভবত আপনাকে বোঝাতে পারে যে এটি অত্যন্ত শক্তিশালী। আমি তবে তালিকাগুলিতে অপারেশনগুলি দেখতে চাই। আপনি কোনও ক্রিয়াকলাপের ক্ষেত্রে সবচেয়ে বেশি ডেটা কাঠামো সংজ্ঞায়িত করতে পারেন যা এতে সর্বাধিক গুরুত্বপূর্ণ অপারেশন করে।
উদাহরণস্বরূপ তালিকার একটি এনকোডিং হ'ল ভাঁজ ফাংশন যা এর উপরে ভাঁজ হয়। মনে রাখবেন এটি চার্চের এনকোডিং নয়, তবে আমি পার্সির ধরণ এবং প্রোগ্রামিং ভাষা থেকে পেয়েছি। চার্চের জুড়ি এনকোডিংগুলি আমাদের পুনরাবৃত্তি দেয় না আমাদের এটিকে আবার কোনও ধরণের পুনরাবৃত্তির সংমিশ্রকের সাথে যুক্ত করতে হবে।
সুতরাং একটি তালিকা দুটি আর্গুমেন্ট, ভাঁজ করতে একটি ফাংশন, এবং কোনও সময়ে ভাঁজ মধ্যে প্লাগ করতে একটি প্রাথমিক মান লাগে।
cons x xs = lam f. lam a. f x (xs f a)
nil = lam f. lam a. a
এখন আমরা একটি অ্যাড ফাংশন প্রদত্ত একটি সংশ্লেষ সংজ্ঞায়িত করতে পারি (উপরে থেকে গির্জার এনকোডিংগুলি দেখুন)
sum xs = xs add 0
আমরা আরও কিছু করতে এবং মানচিত্রের কার্যকারিতা সংজ্ঞায়িত করতে পারি
consApply f x xs = cons (f x) xs
map f xs = xs (consApply f) nil
আপনি যদি এখনও নিশ্চিত না হন যে এখানে গণনা চলছে এবং আপনি যে কোনও গণনা সম্পাদন করতে পারবেন তা নিশ্চিত করতে চান তবে স্থির পয়েন্ট সংযোজকটি পরীক্ষা করে দেখুন । এটি মাঝে মাঝে চিন্তা করতে আমার মাথাটিকে খানিকটা ব্যাথা দেয় তবে আমি নিশ্চিত নই যে আমি এটিকে স্বজ্ঞাগত বলব তবে আপনি যদি কিছু যুক্তি দিয়ে ম্যানুয়ালি এটি মূল্যায়ন করেন তবে আপনি কী দেখতে পাচ্ছেন তা দেখতে পাবেন।