ghcを使用している場合、
以下のように書くと構文エラーが出る。
error.hs
sat p = do x <- item
if p x then return x else failure
ifはdoよりも右側に字下げする必要がある。
ok.hs
sat p = do x <- item
if p x then return x else failure
Haskell 2010以前は、then節 と else節 も字下げする必要があったらしい。