问题描述
我正在尝试通过与以下模式匹配来做到这一点
[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"