特别是一个字符串.所以它会采取["so", "what", "and", "so", "for" "so"]并返回["so", "so", "so"].我的问题是我的函数返回一个与输入的列表相同的列表.
这是所有相关的代码:
lookAhead :: [String] -> String
lookAhead [] = []
lookAhead (c:cs) = c
groupFirst :: [String] -> [String]
groupFirst [] = []
groupFirst (x:xs)
| lookAhead xs == x = x : (groupFirst ((lookAhead xs):(tail xs)))
| lookAhead xs /= x = x : (groupFirst xs)
| lookAhead xs == [] = x : []
Run Code Online (Sandbox Code Playgroud) 所以在我的代码中,我将数据类型Token声明为:
data Token = Char | Int
deriving (Show,Eq,Ord)
Run Code Online (Sandbox Code Playgroud)
和声明为的函数readIfNumber
readIfNumber :: Char -> Token
readIfNumber a
| isDigit a = Token (digitToInt a)
| otherwise = Token a
Run Code Online (Sandbox Code Playgroud)
但是当我尝试编译时,根据我的Token声明,控制台返回错误"期望类型令牌,但得到Char"或"期望令牌,但得到Int",当Int应被视为令牌时.我在这做错了什么?