I'm trying to convert IO [String]
to [String]
with <-
binding; however, I need to use a do
block to do that under a where
statement, but Haskell complains about the indentation all the time. Here is the code:
decompEventBlocks :: IO [String] -> IO [[String]]
decompEventBlocks words
| words' /= [] = block : (decompEventBlocks . drop $ (length block) words')
| otherwise = []
where
do
words' <- words
let block = (takeWhile (/="END") words')
What is the reason for that ? And how can we use do
block in a where
statement ? Moreover, is there any chance that we can have some statements before the guards ?