gpt4 book ai didi

haskell - [Char] a -> IO a 函数

转载 作者:行者123 更新时间:2023-12-02 21:12:07 27 4
gpt4 key购买 nike

如何编写一个函数,以便 Left x 出现 IO 错误,但 Right x 像往常一样返回其结果,即该函数具有签名 Either [字符] a -> IO a

基本上,我希望 Left err 结果成为 IO Monad 中的 err

最佳答案

一个简单的定义是:

f :: Either String a -> IO a
f = either (ioError . userError) return

请注意,我们可以使用 fail 来使其通用,但是 fail 出现在 Monad 中确实是一个历史意外,所以我不会使用这个定义:

f :: Monad m => Either String a -> m a
f = either fail return

更好的通用版本可能会使用 MonadError 类:

import Control.Monad.Error.Class

f :: MonadError e m => Either String a -> m a
f = either (throwError . strMsg) return

关于haskell - [Char] a -> IO a 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15908684/

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