Haskell -- "The last statement in a 'do' construct must be an expression"

haskell, io, monads, syntax

Solution

Most of the time, it's because your code is mis-aligned and compiler assumes that your "do" block ended prematurely (or has extra code that dont really belong there)

Problem

Like it says in the title: What does `The last statement in a 'do' construct must be an expression` mean? I ended my `do` block with a `putStrLn` like it shows in several examples I've seen, and i get an error. Code: ``` main = do args <- getArgs file <-readFile "TWL06.txt" putStrLn results ```

Original source