-
8 votesanswersviews
如何将可变向量放入状态Monad
我在haskell中编写了一个小程序,使用State Monad with Vector计算Tree中所有的Int值的出现次数: import Data.Vector import Control.Monad.State import Control.Monad.Identity data Tree a = Null | Node (Tree a) a (Tree a) deriving Sho... -
4 votesanswersviews
在Haskell中组合ST和List monad
使用 StateT monad变换器,我可以创建类型 StateT s [] a ,它与 s -> [(a, s)] 同构 . 现在我宁愿使用STT monad transformer,因为我希望有多个不同类型的可变变量,并且希望能够随意实例化它们,具体取决于早期计算的结果 . 但是, STT 的链接文档明确提到: 此monad变换器不应与包含多个答案的monad一起使用,例如list ... -
4 votesanswersviews
将ST monad重新装扮成类似于州Monad的东西
这是一个场景:给定的是一个C库,其核心是一些结构,其中的操作由丰富的C函数提供 . Step 1: 使用Haskell的FFI创建了一个包装器 . 它具有 myCLibInit :: IO MyCLibObj , myCLibOp1 :: MyCLibObj -> ... -> IO () 等功能 . MyCLibObj 是一个opaque类型,它将 Ptr 或 ForeignPt...