MonadIO 到 Maybe
MonadIO to Maybe
我一直在将 HMatrix 用于线性代数,它的 linearSolve
函数具有简单(尽管简洁)的类型:
linearSolve :: Field t => Matrix t -> Matrix t -> Maybe (Matrix t)
我想试用 sparse-linear-algebra
库,它是 <\>
函数(不是 HMatrix 中的 <\>
函数),其类型为:
(<\>) :: (MonadIO m, MonadThrow m) => MatrixType v -> v -> m v
虽然我想使用它提供的附加信息,但我想从直接替换以下类型开始:
MatrixType v -> v -> Maybe v
这样我就不用一直重写我的代码,直到 main
。我该怎么做?
我是 Haskell 的新手,仍处于 "Oh! I understand monads now. No! Wait! It's gone again" 阶段。
谢谢
根据评论看来:
- 一旦进入
Monad IO
,就无路可逃。因此,最初的新手 Haskeller 问题的答案是 "you can't"
- 图书馆作者@ocramz 已有使用计划
MonadLogger
,我们可能会在即将进行的重新设计中看到一些东西
我一直在将 HMatrix 用于线性代数,它的 linearSolve
函数具有简单(尽管简洁)的类型:
linearSolve :: Field t => Matrix t -> Matrix t -> Maybe (Matrix t)
我想试用 sparse-linear-algebra
库,它是 <\>
函数(不是 HMatrix 中的 <\>
函数),其类型为:
(<\>) :: (MonadIO m, MonadThrow m) => MatrixType v -> v -> m v
虽然我想使用它提供的附加信息,但我想从直接替换以下类型开始:
MatrixType v -> v -> Maybe v
这样我就不用一直重写我的代码,直到 main
。我该怎么做?
我是 Haskell 的新手,仍处于 "Oh! I understand monads now. No! Wait! It's gone again" 阶段。
谢谢
根据评论看来:
- 一旦进入
Monad IO
,就无路可逃。因此,最初的新手 Haskeller 问题的答案是 "you can't" - 图书馆作者@ocramz 已有使用计划
MonadLogger
,我们可能会在即将进行的重新设计中看到一些东西