আমার তিনটি ফাংশন রয়েছে যা তালিকার নবম উপাদানটি খুঁজে পায়:
nthElement :: [a] -> Int -> Maybe a
nthElement [] a = Nothing
nthElement (x:xs) a | a <= 0 = Nothing
| a == 1 = Just x
| a > 1 = nthElement xs (a-1)
nthElementIf :: [a] -> Int -> Maybe a
nthElementIf [] a = Nothing
nthElementIf (x:xs) a = if a <= 1
then if a <= 0
then Nothing
else Just x -- a == 1
else nthElementIf xs (a-1)
nthElementCases :: [a] -> Int -> Maybe a
nthElementCases [] a = Nothing
nthElementCases (x:xs) a = case a <= 0 of
True -> Nothing
False -> case a == 1 of
True -> Just x
False -> nthElementCases xs (a-1)
আমার মতে, প্রথম ফাংশনটি সর্বোত্তম বাস্তবায়ন কারণ এটি সবচেয়ে সংক্ষিপ্ত। তবে অন্য দুটি বাস্তবায়ন সম্পর্কে কি এমন কিছু রয়েছে যা তাদেরকে অগ্রাধিকারযোগ্য করে তুলবে? এবং এক্সটেনশনের মাধ্যমে, আপনি কীভাবে প্রহরী, অন্যথায় বিবৃতি এবং মামলাগুলির মধ্যে নির্বাচন করবেন?
case compare a 1 of ...
caseযদি ব্যবহার করেন তবে আপনার নেস্টেড বিবৃতিগুলি ভেঙে ফেলতে পারেনcase compare a 0 of LT -> ... | EQ -> ... | GT -> ...