我正在尝试使用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)
您收到该错误消息,因为isNumber在Data.Char模块中定义了该消息,您没有将其导入.导入它将修复该错误.
这不是你唯一的问题.另一个问题是使用四个参数进行digits ls isNumber l调用digits,但您已定义digits为只接受一个参数.
类似地,digits a True调用digits使用两个参数调用- 同样的问题.你可能想在digits1 a True这里写,就像digits1两个论点一样.
最后双方digits和digits1被定义为接受任意列表作为参数,但你似乎想打电话给isNumber在列表中的元素.因为isNumber是一个只对Chars 有效的函数- 而不是任意值 - 你应该取一个Chars(即a String)列表.