সম্পূর্ণতার স্বার্থে, আমাকে একটি "কুরুচিপূর্ণ" বিকল্প পদ্ধতির যোগ করতে দিন, যা তবে এটি মূল বিষয়।
স্মরণ করুন এটি Maybe aএমন এক ধরণের যা এর মানগুলি ফর্মের Nothingবা কারও Just xজন্য x :: a।
সুতরাং, উপরের মানগুলি পুনরায় ব্যাখ্যা করে আমরা Maybe aএকটি "সীমাবদ্ধ তালিকার ধরণ" হিসাবে বিবেচনা করতে পারি যেখানে তালিকার শূন্য বা একটি উপাদান থাকতে পারে।
এখন, (a, Maybe a)কেবল আরও একটি উপাদান যুক্ত করুন, সুতরাং এটি "তালিকার ধরণ" যেখানে তালিকায় একটি ( (x1, Nothing)) বা দুটি ( (x1, Just x2)) উপাদান থাকতে পারে।
সুতরাং, Maybe (a, Maybe a)একটি "তালিকার ধরণ" যেখানে তালিকার শূন্য ( Nothing), একটি ( Just (x1, Nothing)), বা দুটি ( (Just (x1, Just x2)) উপাদান থাকতে পারে।
কীভাবে এগিয়ে যেতে হবে আপনার এখন বুঝতে সক্ষম হওয়া উচিত। আমাকে আবারও চাপ দিন যে এটি ব্যবহারের পক্ষে সুবিধাজনক সমাধান নয়, তবে এটি (আইএমও) যাইহোক এটি বোঝার জন্য একটি দুর্দান্ত অনুশীলন।
হাস্কেলের কয়েকটি উন্নত বৈশিষ্ট্য ব্যবহার করে আমরা একটি ধরণের পরিবার ব্যবহার করে উপরেরটিকে সাধারণীকরণ করতে পারি:
type family List (n :: Nat) (a :: Type) :: Type where
List 0 a = ()
List n a = Maybe (a, List (n-1) a)