(String -> Maybe (Char, String)) ===> (Source -> Maybe (Token, Source))