我一直在将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还是很陌生,仍然处于“哦!我现在了解单子了。不!等待!它又消失了”阶段。
谢谢
最佳答案
根据评论,它看起来像:
一旦进入Monad IO
,就无法逃脱。因此,原始的新手Haskeller问题的答案是“您不能”
库作者@ocramz已有使用MonadLogger
的计划,我们可能会在即将进行的重新设计中看到一些内容
关于haskell - MonadIO到Maybe,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49454057/