3

functionがあり、次のセマンティックでそれを使用しsmallStep :: Command -> Data -> Either StepError Dataたいと思います。bigStep :: [Command] -> Data -> Either StepError Data

bigStep []   data   = Right data
bigStep c:cs data   = do
               data' <- bigStep cs data
               smallStep c data'

複雑なことは何もありませんが、smallSteptypeがあれば、単純に としてCommand -> Data -> Data実装します。bigStepbigStep commands data = foldr data smallStep commands

当然、ここも利用したいfoldr。どうすればいいですか?foldMが解除されfoldl、リストを逆にするのはあまり良い考えではないように思えます。

4

1 に答える 1