我需要實作該find函式,該函式從屬于的鍵值對串列中檢索與特定鍵關聯的值。鍵值對由簡單的元組定義。
例子:
find 2 [(3,"xy"),(2,"abc"),(4,"qwe")] == "abc"
find 42 [(1,2),(3,4),(42,42)] == 42
我的代碼:
find :: Eq a => a -> [(a, b)] -> b
find 'x (a, b)
| x == a = b
uj5u.com熱心網友回復:
find :: Eq a => a -> [(a, b)] -> Maybe b
find _ [] = Nothing
find x ((a, b):xs)
| x == a = Just b
| otherwise = find x xs
我冒昧地將函式簽名的回傳型別更改Maybe b為涵蓋未找到搜索值的情況。據我所知,這在 Haskell 的這些情況下是慣例。
有2種基本模式。如果串列已用盡且之前未找到任何結果,則回傳Nothing。否則,檢查它是否匹配,如果匹配,則回傳包含在 中的值Just,否則遞回進一步搜索。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/334864.html
上一篇:嘗試在React中進行階乘
下一篇:如何列印多個函式的回傳值?
