+satTok t = top >>= \tok=:(pos, tv) -> if (eq t tok) (return tok) (fail <?> (printToString tv, pos))
+ where
+ eq (IdentToken _) (_, IdentToken _) = True
+ eq (NumberToken _) (_, NumberToken _) = True
+ eq (CharToken _) (_, CharToken _) = True
+ eq x (_, y) = gEq {|*|} x y