Как я могу выразить следующее без вложенных операторов case? В частности, я хотел бы сделать шаги по порядку и вызвать сбой, если какой-либо из шагов попал в «плохую» ветвь.Как я могу избежать этих случаев?
loadData :: IO [Market]
loadData = do
filedata <- B.readFile "markets.json"
case parseData filedata of
Left err -> fail err
Right v -> do
case fromJSON v of
Error err -> fail err
Success a -> return a
Это должно помочь: http://en.wikibooks.org/wiki/Haskell/Monad_transformers – user3237465