小编Ale*_*lex的帖子

为什么我的MaybeT(State <type>)()忽略状态变化?

短版本:当我使用runMaybeT然后使用runState类型的monad时MaybeT (State <type>) (),看起来即使Maybe结果等于也没有发生状态变化Just ().为什么?

完整版:我正在编写一个程序来解决河内之塔.我将解决方案表示为Statemonad 列表,在排序时,操作初始Towers状态:

data Towers = Towers [Int] [Int] [Int]
    deriving (Show)
type Move = State Towers ()

towerMoves :: Int -> Rod -> Rod -> [Move]
towerMoves 1 r1 r2 = [pop r1 >>= push r2]
towerMoves n r1 r2 = topToTemp ++ (towerMoves 1 r1 r2) ++ topToFinal
  where
    r3 = other r1 r2
    topToTemp = towerMoves (n …
Run Code Online (Sandbox Code Playgroud)

haskell state-monad monad-transformers

4
推荐指数
1
解决办法
148
查看次数

标签 统计

haskell ×1

monad-transformers ×1

state-monad ×1