0

我正在尝试使用 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
4

1 回答 1

7

您会收到该错误消息,因为isNumber它是在模块中定义的Data.Char,而您没有导入它。导入它将修复该错误。

这不是你唯一的问题。另一个问题是使用四个参数digits ls isNumber l进行调用digits,但您已定义digits为仅使用一个参数。

同样,digits a True调用digits带有两个参数 - 同样的问题。您可能打算在digits1 a True这里写,因为digits1需要两个参数。

最后,digitsdigits1都被定义为将任意列表作为参数,但您似乎想调用isNumber列表的元素。由于isNumber是一个仅适用于Chars 的函数 - 而不是任意值 - 您可能应该取一个Chars 列表(即 a String)。

于 2013-03-16T21:45:31.673 回答