如何将字符与 Haskell 中的数字进行比较?

问题描述

我正在尝试通过与以下模式匹配来做到这一点

[x| x <- "example string",x > 106]

我知道您可以比较 x > a 之类的东西,我猜需要显式转换。我在网上找到但不起作用的一种方法

[x| x <- "example string",ord x > 106]

而且显然不能将 ord 识别为有效关键字。

解决方法

ord :: Char -> Int 不是关键字,它是Data.Char module中的一个函数:

import Data.Char(ord)

myExpr = [x | x <- "example string",ord x > 106]

这里使用 filter 可能更方便:

import Data.Char(ord)

myExpr = filter ((106 <) . ord) "example string"

两者都返回:

Prelude Data.Char> [x | x <- "example string",ord x > 106]
"xmplstrn"
Prelude Data.Char> filter ((106 <) . ord) "example string"
"xmplstrn"
,

如果你要比较的数字是一个常数,你总是可以反其道而行之:将该数字转换为字符常量,然后直接将其与你的字符进行比较:

filter (> 'j') "example string"