trans1 :: TokenValue a -> Parser Token a
trans1 t r = trans2 t $ const r
+derive gEq TokenValue
satTok :: TokenValue -> Parser Token Token
-satTok t = satisfy ((===) t)
+satTok t = satisfy $ eq t
+ where
+ eq (IdentToken _) (_, IdentToken _) = True
+ eq (NumberToken _) (_, NumberToken _) = True
+ eq (CharToken _) (_, CharToken _) = True
+ eq x (_, y) = gEq {|*|} x y
parseSepList :: TokenValue (Parser Token a) -> Parser Token [a]
parseSepList sep p =