检测Haskell中的整数

0 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
Run Code Online (Sandbox Code Playgroud)

sep*_*p2k 7

您收到该错误消息,因为isNumberData.Char模块中定义了该消息,您没有将其导入.导入它将修复该错误.

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

类似地,digits a True调用digits使用两个参数调用- 同样的问题.你可能想在digits1 a True这里写,就像digits1两个论点一样.

最后双方digitsdigits1被定义为接受任意列表作为参数,但你似乎想打电话给isNumber在列表中的元素.因为isNumber是一个只对Chars 有效的函数- 而不是任意值 - 你应该取一个Chars(即a String)列表.