gpt4 book ai didi

return-value - 如何在 Haskell 中获取 Maybe 的值

转载 作者:行者123 更新时间:2023-12-03 08:16:58 26 4
gpt4 key购买 nike

我对 Haskell 比较陌生,并开始阅读“Real World Haskell”。

我只是偶然发现了 Maybe 类型,并有一个关于如何从 Just 1 接收实际值的问题。例如。

我写了以下代码:

combine a b c = (eliminate a, eliminate b, eliminate c)
where eliminate (Just a) = a
eliminate Nothing = 0

如果我使用,这很好用:
combine (Just 1) Nothing (Just 2)

但是,例如,如果我将 1 更改为 String 它将不起作用。

我想我知道为什么:因为 eliminate必须返回一种类型,在这种情况下是 Int .但是如何更改 eliminate至少处理字符串(或者可能处理所有类型)?

最佳答案

来自标准 Prelude ,

maybe :: b -> (a -> b) -> Maybe a -> b
maybe n _ Nothing = n
maybe _ f (Just x) = f x

给定一个默认值和一个函数,将该函数应用于 Maybe 中的值或返回默认值。

您的 eliminate可以写成 maybe 0 id ,例如应用恒等函数,或返回 0。

来自标准 Data.Maybe ,
fromJust :: Maybe a -> a
fromJust Nothing = error "Maybe.fromJust: Nothing"
fromJust (Just x) = x

这是一个部分函数(不为每个输入返回一个值,与总函数相反),但会在可能的情况下提取该值。

关于return-value - 如何在 Haskell 中获取 Maybe 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4940349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com