我一直在将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/

10-12 21:59