> Let2>> expr (lexer "4 * (7 + 1) - 1") :: Result Expr > Return (Bin (Bin (Const 4) Times (Bin (Const 7) Plus (Const 1))) Minus (Const 1)) > Let2>> expr (lexer "4 * 7 + 1 - 1") :: Result Expr > Return (Bin (Bin (Bin (Const 4) Times (Const 7)) Plus (Const 1)) Minus (Const 1)) > Let2>> expr (lexer "let\n a = 4 * (7 + 1) - 1\n in a * a") :: Result Expr > Return (Let ("a" :=: Bin (Bin (Const 4) Times (Bin (Const 7) Plus (Const 1))) Minus (Const 1)) (Bin (Var "a") Times (Var "a"))) > Let2>> expr (lexer "let\n a = 4 * (7 + 1 - 1\n in a * a") :: Result Expr > Fail "syntax error"