验证Haskell中的多位整数

时间:2015-06-21 17:48:23

标签: haskell

我正在编写一个小的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位或更多位数)

1 个答案:

答案 0 :(得分:4)

这是一个暗示:

> import Data.Char
> span isDigit "123abc456"
("123","abc456")

span isDigit返回一对:仅由数字构成的最长前缀,以及字符串的其余部分。