Resolving dependencies... Configuring mtl-2.2.1... Configuring syb-0.6... Building mtl-2.2.1... Building syb-0.6... Configuring text-1.2.2.1... Installed syb-0.6 Installed mtl-2.2.1 Building text-1.2.2.1... Installed text-1.2.2.1 Configuring parsec-3.1.11... Building parsec-3.1.11... Installed parsec-3.1.11 Configuring preprocessor-tools-1.0.1... Building preprocessor-tools-1.0.1... Installed preprocessor-tools-1.0.1 Configuring ixdopp-0.1.2... Building ixdopp-0.1.2... Failed to install ixdopp-0.1.2 Build log ( /home/builder/.cabal/logs/ixdopp-0.1.2.log ): cabal: Entering directory '/tmp/cabal-tmp-8896/ixdopp-0.1.2' Configuring ixdopp-0.1.2... Building ixdopp-0.1.2... Preprocessing executable 'ixdopp' for ixdopp-0.1.2... [1 of 1] Compiling Main ( Main.hs, dist/build/ixdopp/ixdopp-tmp/Main.o ) Main.hs:26:19: error: • Couldn't match type ‘[Ast]’ with ‘IO [Ast]’ Expected type: [Ast] -> IO [Ast] Actual type: IO [Ast] -> IO [Ast] • In the ‘transformer’ field of a record In the expression: mempty {keywords = [[I "ixdo"]], transformer = everywhere (mkT trans)} In an equation for ‘ixdo’: ixdo lets = mempty {keywords = [[I "ixdo"]], transformer = everywhere (mkT trans)} where trans :: Ast -> Ast trans ast@(Block {item = Token {val = "ixdo"}}) = case splitSemis (body ast) of { [] -> errorAt ast "ixdo must end with an expression" stms -> foldr stm (parens (last stms)) (init stms) `cloneLoc` ast } trans ast = ast stm asts rest = case asts of { [b@(Block {item = t, next = Empty})] | val t `elem` ("let" : lets) -> parens ... where ... _ -> parens $ ... } Main.hs:55:19: error: • Couldn't match type ‘[Ast]’ with ‘IO [Ast]’ Expected type: [Ast] -> IO [Ast] Actual type: IO [Ast] -> IO [Ast] • In the ‘transformer’ field of a record In the expression: mempty {keywords = [[I "clet", P "in"], [I "clet"]], transformer = everywhere (mkT trans)} In an equation for ‘clet’: clet = mempty {keywords = [[I "clet", ....], [I "clet"]], transformer = everywhere (mkT trans)} where trans :: Ast -> Ast trans ast@(Block {item = Token {val = "clet"}}) = foldr stm Empty (splitSemis (body ast)) `cloneLoc` ast trans ast = ast stm asts rest = noParens $ case splitVal "=" asts of { Nothing -> errorAt asts "expected = in clet" Just (pat, _, expr) -> quasi "'#1' $ \\ '#2' -> '#3'" ... } Main.hs:73:19: error: • Couldn't match type ‘[Ast]’ with ‘IO [Ast]’ Expected type: [Ast] -> IO [Ast] Actual type: IO [Ast] -> IO [Ast] • In the ‘transformer’ field of a record In the expression: mempty {keywords = [[I "llet", P "in"], [I "llet"]], transformer = everywhere (mkT trans)} In an equation for ‘llet’: llet = mempty {keywords = [[I "llet", ....], [I "llet"]], transformer = everywhere (mkT trans)} where trans :: Ast -> Ast trans ast@(Block {item = Token {val = "llet"}}) = foldr stm Empty (splitSemis (body ast)) `cloneLoc` ast trans ast = ast stm asts rest = noParens $ case splitVal "=" asts of { Nothing -> errorAt asts "expected = in llet" Just (pat, _, expr) -> ... } debangifyList pat = case splitBy (valIs ",") pat of { Nothing -> debangify pat Just (a, c, r) -> debangify a ++ c : debangify r } .... cabal: Leaving directory '/tmp/cabal-tmp-8896/ixdopp-0.1.2' cabal: Error: some packages failed to install: ixdopp-0.1.2 failed during the building phase. The exception was: ExitFailure 1