[英]How to use Maybe in higher order function haskell?
我想解決以下 f 返回 Nothing 的問題,然后刪除第一個元素。 如果 f 返回 Just x,則第一個元素將更改為 x。 我下面的答案適用於 Nothing 但我不明白如何區分 Nothing 和 Just 在 function
change:: (a -> Maybe a) -> [a] -> [a]
change f [] = []
change f (x:xs) = xs
改變(\x -> 無)[1..5] == [2..5]
change(\x -> 僅 10) [1,2,3] == [10,2,3]
對於一個簡單的解決方案,您可以像這樣在fx
上進行模式匹配(使用case
):
change:: (a -> Maybe a) -> [a] -> [a]
change _ [] = []
change f (x:xs) =
case f x of
Just x' -> x':xs
Nothing -> xs
那應該做你描述的
對於較短的,您可以使用maybeToList
並像這樣連接部分:
change:: (a -> Maybe a) -> [a] -> [a]
change _ [] = []
change f (x:xs) = (maybeToList $ f x) ++ xs
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.