我在使用isUpper,isLower和isDigit时遇到麻烦。具体来说,我正在尝试获取一个字符串,并为包含三个 bool 值的字符串中的每个字符返回一个元组列表,以了解该字符是大写字母,小写字母还是数字。因此,字符串“Ab2”将返回列表[(True,False,False),(False,True,False),(False,False,True)]。这就是我所拥有的:
import Data.Char
uppercaseList :: [a] -> [(Bool, Bool, Bool)]
uppercaseList xs = [(isUpper, isLower, isDigit)]
我想我需要将字符串的字符传递给isUpper,isLower和isDigit,但是我不知道该怎么做。很抱歉,这是一个愚蠢的问题,但是到目前为止,我发现的任何信息都无法解决我的困惑。
最佳答案
您需要检查列表的每个元素(xs
)。通常,这种任务是通过使用map
完成的
import Data.Char
uppercaseList :: String -> [(Bool, Bool, Bool)]
uppercaseList xs = map (\x -> (isUpper x, isLower x, isDigit x)) xs
或列表理解
uppercaseList xs = [ (isUpper x, isLower x, isDigit x) | x <- xs ]
或从头开始
uppercaseList [] = []
uppercaseList (x:xs) = (isUpper x, isLower x, isDigit x) : uppercaseList xs
关于haskell - 在Haskell中使用isUpper,isLower和isDigit,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46211868/