:: Mode = MHelp | MLex | MParse | MType | MInterpret | MGen
:: Result
= Lex [Token]
- | Parse AST
- | Type [([Char], Scheme)]
+ | Parse [Function]
+ | Type Expression
| Interpret Value
| Gen [String]
MHelp = Left [usageInfo ("Usage: " +++ argv0 +++ " [options]\n") options]
MLex = Lex <$> lex cs
MParse = Parse <$> (lex cs >>= parse)
- MType = Type <$> snd <$> (lex cs >>= parse >>= check)
- MInterpret = Interpret <$> (lex cs >>= parse >>= check >>= int o fst)
- MGen = Gen <$> (lex cs >>= parse >>= check >>= gen o fst)
+ MType = Type <$> (lex cs >>= parse >>= check)
+ MInterpret = Interpret <$> (lex cs >>= parse >>= check >>= int)
+ MGen = Gen <$> (lex cs >>= parse >>= check >>= gen)