0
私はinorderでナンバリングツリーを書いています。ご覧のとおり、put
を使用しました。ここでwithState
を使用できますか?haskell - putの代わりにwithStateを使用する
renumberTree2Inorder :: Tree a -> StateT Int Identity (Tree Int)
renumberTree2Inorder Empty = return Empty
renumberTree2Inorder (Node _ l r) = (renumberTree2Inorder l) >>= (\l' ->
get >>= (\i -> put (i + 1) >>= (\_ -> renumberTree2Inorder r) >>= (\r' -> return (Node i l' r'))))
renumberTree2Inorder' :: Tree a -> Tree Int
renumberTree2Inorder' t = evalState (renumberTree2Inorder t) 0
この 'withState'の使用は意味がありません。あなたは単に' get'で呼び出すようにします。正確に 'modify(+1)>> get'です。おそらく、再帰的な場合に 'withState'が適用されるはずです。 – user2407038
ああ、そう。一定! – hao