gpt4 book ai didi

haskell - MaybeT monad 中没有任何内容 : more concise way?

转载 作者:行者123 更新时间:2023-12-01 03:23:11 24 4
gpt4 key购买 nike

我正在尝试 MaybeT monad,特别是 MaybeT Identity String

import Control.Monad.Trans.Maybe
import Control.Monad.Identity
import Data.Maybe

main :: IO ()
main = putStrLn . show . runIdentity . runMaybeT $ maybeGetString

maybeGetString :: MaybeT Identity String
maybeGetString = return "first" >>
maybeTNothing >>
return "second"

maybeTNothing :: MaybeT Identity String
maybeTNothing = MaybeT $ return Nothing
MaybeT 的表达式相当于 Nothing好像是 MaybeT $ return Nothing ,感觉有点冗长,而且我觉得必须明确使用 MaybeT构造函数。

有没有更短/更好/更清晰的写作方式 NothingMaybeT单子(monad)?

最佳答案

受到@luqui 评论的启发

表现得像 Nothing在平原Maybe单子(monad),maybeTNothing应该满足方程

maybeTNothing >>= f  =  maybeTNothing
v >> maybeTNothing = maybeTNothing

这正是 mzero 上的要求来自 MonadPlus , 其中 MaybeT是的一个实例。所以我们可以使用 mzero
maybeTNothing = mzero

https://hackage.haskell.org/package/base-4.9.1.0/docs/Control-Monad.html#t:MonadPlus

关于haskell - MaybeT monad 中没有任何内容 : more concise way?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43754165/

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