MonadIO可能

时间:2018-03-23 16:14:18

标签: haskell sparse-matrix monads

我一直在使用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来说相当新,但仍然在&#34;哦!我现在了解monad。没有!等待!它再次消失了#34;相。

由于

1 个答案:

答案 0 :(得分:1)

根据评论看来:

  1. 一旦你进入Monad IO,就没有逃脱。因此,原来新手Haskeller问题的答案是“你不能”
  2. 图书馆作者@ocramz现有计划使用MonadLogger,我们可能会看到即将进行重新设计的一部分