我正在编写一个小的tokenizer程序来分别识别每个字符串输入。然而,当我用多位数字测试时,说" 256"它给了我一个[数字2,数字5,数字6]的字符串标记,这不是我的预期。
import Data.Char
data Token = Number Integer
deriving (Show, Eq)
tokenize :: String -> [Token]
tokenize (c:cs)
| isDigit c = Number (read [c]) : tokenize cs
| otherwise = error
如何使isDigit
使用大于9的整数? (有2位或更多位数)
答案 0 :(得分:4)
这是一个暗示:
> import Data.Char
> span isDigit "123abc456"
("123","abc456")
span isDigit
返回一对:仅由数字构成的最长前缀,以及字符串的其余部分。