:: Token
//Value tokens
- = IdentToken String // Identifier
+ = IdentToken [Char] // Identifier
| NumberToken Int // Integer
| CharToken Char // Character literal
//Keyword tokens
| EqualsToken // ==
| AmpersandsToken // &&
| PipesToken // ||
+ | ArrowToken // ->
-:: LexerOutput :== Either String [Token]
+:: LexerOutput a :== Either String a
-lexer :: [Char] -> LexerOutput
+lexer :: [Char] -> LexerOutput [Token]