我正在尝试在Haskell中使用Maybe类型.我查找了返回Maybe的键值元组.如何访问由Maybe包装的数据?例如,我想将Maybe包含的整数与另一个整数相加.
Mar*_*ijn 36
或者你可以模式匹配:
case maybeValue of
Just value -> ...
Nothing -> ...
Run Code Online (Sandbox Code Playgroud)
ars*_*enm 19
您可以使用Data.Maybe.fromMaybe,Maybe a如果是,则使用a 和值Nothing.您可以使用不安全的Data.Maybe.fromJust,如果值为,则会崩溃Nothing.你可能想把东西放进去Maybe.如果你想在a中添加一个整数Maybe,你可以做类似的事情
f x = (+x) <$> Just 4
Run Code Online (Sandbox Code Playgroud)
这是一样的
f x = fmap (+x) (Just 4)
Run Code Online (Sandbox Code Playgroud)
f 3那将是Just 7.(您可以继续以这种方式链接其他计算.)
正如旁注:既然Maybe是a Monad,你可以使用do-notation 构建计算......
sumOfThree :: Maybe Int
sumOfThree = do
a <- someMaybeNumber
b <- someMaybeNumber
c <- someMaybeNumber
let k = 42 -- Just for fun
return (a + b + c + k)
Run Code Online (Sandbox Code Playgroud)
"可能"的示例:
> maybe 0 (+ 42) Nothing
0
> maybe 0 (+ 42) (Just 12)
54
Run Code Online (Sandbox Code Playgroud)
抱歉,我应该更好地用谷歌搜索。
使用 fromMaybe 函数正是我所需要的。如果不是空值,fromMaybe 将返回 Maybe 中的值,否则将返回提供给 fromMaybe 的默认值。
http://www.haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/Data-Maybe.html
| 归档时间: |
|
| 查看次数: |
34452 次 |
| 最近记录: |