我正在尝试使用Haskell(我也是全新的)并且每当我尝试使用ghci编译它时我得到Not in scope: 'isNumber'
,我做错了什么?
digits :: [a] -> Bool
digits a = digits a True
digits1 :: [a] -> Bool -> Bool
digits1 [] False = False
digits1 [] True = True
digits1 (l:ls) True = digits ls isNumber l
digits1 (l:ls) False = False
答案 0 :(得分:7)
您收到该错误消息,因为isNumber
模块中定义了Data.Char
,您没有导入该模块。导入它将解决该错误。
但这不是你唯一的问题。另一个问题是digits ls isNumber l
使用四个参数调用digits
,但您已定义digits
只接受一个参数。
类似地,调用digits a True
使用两个参数调用digits
- 同样的问题。你可能想在这里写digits1 a True
,因为digits1
确实有两个参数。
最后,digits
和digits1
都被定义为将任意列表作为参数,但您似乎想要在列表的元素上调用isNumber
。由于isNumber
是一个仅适用于Char
s的函数 - 而不是任意值 - 您应该更改Char
s列表(即String
)。