Haskell 如果字符串只包含数字,则返回true的程序

Haskell 如果字符串只包含数字,则返回true的程序,haskell,Haskell,我想制作一个程序,如果一个字符串在Haskell中只包含数字,则返回true 这是我的尝试: checkNum :: String -> Bool checkNum xs = ((length (filter isDigit xs )) == length (xs)) 这是我得到的错误: 不在范围内:`isDigit' 我的代码怎么了?这应该可以: import Data.Char (isDigit) checkNum :: String -> Bool checkNum = a

我想制作一个程序,如果一个字符串在Haskell中只包含数字,则返回true

这是我的尝试:

checkNum :: String -> Bool
checkNum xs = ((length (filter isDigit xs )) == length (xs))
这是我得到的错误:

不在范围内:`isDigit'

我的代码怎么了?

这应该可以:

import Data.Char (isDigit)

checkNum :: String -> Bool
checkNum = all isDigit

您需要导入
数据.Char
。注意:您也可以使用
all
。。唯一的结果告诉您它在模块
Data.Char
中的包
base
中。必须导入模块才能使用
import module.Name
,例如
import Data.Char
@Shiran除了导入之外,您的代码没有任何问题。Chris编写的这段代码更短,更漂亮。@Shiran,它适用于至少有一个非数字的无限
String
s,但我不知道这对您是否重要:-)@Shiran除了Sibi和yatima2975指出的以外,
length
的另一个问题是它必须贯穿整个列表,因此,随着列表的增长,速度会变慢。根据经验,如果您确实需要知道列表的长度,则只应使用
length
;如果你只是用它来发现其他的东西,那么几乎总是有更好的方法。