MHelp = Left [usageInfo ("Usage: " +++ argv0 +++ " [opts]\n") opts]
MLex = map (\x->toString x +++ "\n") <$> lex cs
MParse = map (\x->toString x +++ "\n") <$> (lex cs >>= parse)
MType = (\(e, x)->["type: ",toString x, "\n", toString e]) <$> (lex cs >>= parse >>= check)
MInterpret = (\x->[toString x]) <$> (lex cs >>= parse >>= check >>= int o fst)
MGen = lex cs >>= parse >>= check >>= gen o fst
MHelp = Left [usageInfo ("Usage: " +++ argv0 +++ " [opts]\n") opts]
MLex = map (\x->toString x +++ "\n") <$> lex cs
MParse = map (\x->toString x +++ "\n") <$> (lex cs >>= parse)
MType = (\(e, x)->["type: ",toString x, "\n", toString e]) <$> (lex cs >>= parse >>= check)
MInterpret = (\x->[toString x]) <$> (lex cs >>= parse >>= check >>= int o fst)
MGen = lex cs >>= parse >>= check >>= gen o fst