Do declaración bajo una cláusula where

Estoy tratando de convertirIO [String] a[String] con<- Unión; sin embargo, necesito usar unado bloque para hacer eso bajo unwhere, pero Haskell se queja de la sangría todo el tiempo. Aquí está el código:

decompEventBlocks :: IO [String] -> IO [[String]]
decompEventBlocks words
 | words' /= [] = block : (decompEventBlocks . drop $ (length block) words')
 | otherwise = []
  where 
   do
    words' <- words
    let block = (takeWhile (/="END") words')

Cuál es la razón para eso ? ¿Y cómo podemos usardo bloque en unawhere declaración? Además, ¿hay alguna posibilidad de que podamos tener algunas declaraciones ante los guardias?

Respuestas a la pregunta(4)

Su respuesta a la pregunta