计算字符列表中的数字

我需要使用haskell计算出现在字符列表中的位数。 例如。 ['2','3','d','r','t','5'] 将输出3

我设法使用字符串完成此操作,但是在使用字符时却无法使其工作

这是我的字符串代码

isnumber' :: String -> Bool
isnumber' s = case (reads s) :: [(Int,String)] of
[(_,"")] -> True
_         -> False

counta :: [String] -> Int 
counta = length . filter isnumber'

例如['2','5'] 将输出3

l787922411 回答:计算字符列表中的数字

由于您说的是字符列表,因此counta的类型应为:

counta :: [Char] -> Int 
counta = length . filter isNumber'

因此,这意味着isNumber'具有签名Char -> Bool,并因此检查字符是否为数字。但是,我们不需要实现这样的功能:在Data.Char模块中,有一个isDigit :: Char -> Bool函数,因此我们可以通过以下方式实现counta

import Data.Char(isDigit)

counta :: [Char] -> Int
counta = length . filter isDigit
,

相距不远,但是您的isNumber'需要使用一个字符,而不是字符串。所以它是类型

isNumber' :: Char -> Bool

不需要使用read

,

您可以使用 Char -> Bool而不是String -> Bool,它应该在没有读取的情况下工作

本文链接:https://www.f2er.com/3160434.html

大家都在问