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'
複雑なことは何もありませんが、smallStep
typeがあれば、単純に としてCommand -> Data -> Data
実装します。bigStep
bigStep commands data = foldr data smallStep commands
当然、ここも利用したいfoldr
。どうすればいいですか?foldM
が解除されfoldl
、リストを逆にするのはあまり良い考えではないように思えます。