检测Haskell中的整数

时间:2013-03-16 21:41:41

标签: haskell integer

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

1 个答案:

答案 0 :(得分:7)

您收到该错误消息,因为isNumber模块中定义了Data.Char,您没有导入该模块。导入它将解决该错误。

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

类似地,调用digits a True使用两个参数调用digits - 同样的问题。你可能想在这里写digits1 a True,因为digits1确实有两个参数。

最后,digitsdigits1都被定义为将任意列表作为参数,但您似乎想要在列表的元素上调用isNumber。由于isNumber是一个仅适用于Char s的函数 - 而不是任意值 - 您应该更改Char s列表(即String)。