Reputation: 63
My code works in GHCi, but when I try to build the project with cabal build
, it gives the error
parse error on input ‘<-’
Here's a minimal example:
foo :: IO ()
foo = do
let x = do
b <- getLine
return b
return ()
Upvotes: 3
Views: 106
Reputation: 63
It turns out that my GHCi is set up to use the -XNondecreasingIndentation
extension, which can be seen with the command :show language
base language is: Haskell2010
with the following modifiers:
-XNoDatatypeContexts
-XNondecreasingIndentation
Without this extension this is bad syntax:
foo :: IO ()
foo = do
let x = do
b <- getLine
return b
return ()
but this is okay:
foo :: IO ()
foo = do
let
x = do
b <- getLine
return b
return ()
To fix the problem, add
default-extensions:
NondecreasingIndentation
to the .cabal file, or if you prefer add {-# language NondecreasingIndentation #-}
to just this one module. Alternatively, reformat the code as above, or use Haskell98 instead of Haskell2010.
Upvotes: 3