小编use*_*253的帖子

如何将可变向量放入状态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 Show
main :: IO ()
main = do 
    print $ runTraverse (Node Null 5 Null)


type MyMon a = StateT (Vector Int) Identity a

runTraverse :: Tree Int -> ((),Vector Int)
runTraverse t =  runIdentity (runStateT (traverse t) (Data.Vector.replicate 7 0))

traverse :: Tree Int -> MyMon ()
traverse Null = return ()
traverse (Node l v …
Run Code Online (Sandbox Code Playgroud)

monads haskell state-monad monad-transformers st-monad

8
推荐指数
1
解决办法
1128
查看次数