haskell - 在 Haskell 中使用 isUpper、isLower 和 isDigit

标签 haskell

我在如何使用 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/

相关文章:

regex - Haskell 正则表达式性能

haskell - 如何将 HamletSettings 应用于《哈姆雷特》中的准引用?

haskell - 比较 2 个相似类型?

multithreading - 纯函数式数据结构总是无锁的吗?

Haskell:执行包含在 Data.Dynamic 中的 IO 操作

haskell - 实现读取类型类,其中解析字符串包括 "$"

haskell - 为什么我们需要 Control.Lens.Reified?

haskell - 无法在 Haskell 中使用 GHC 从 .hs 输出到 .hc

使用 Parsec 解析数据并省略注释

haskell - 如何创建有限版本的 IO monad