lexer x@(c:_) | isSpace c = let (a,b) = span isSpace x in a : lexer b
lexer x@(c:_) | isSpace c = let (a,b) = span isSpace x in a : lexer b
lexer x@(c:_) | isSpace c = let (a,b) = span isSpace x in a : lexer b