Haskell 如果字符串只包含数字,则返回true的程序
我想制作一个程序,如果一个字符串在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
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
;如果你只是用它来发现其他的东西,那么几乎总是有更好的方法。