You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Data.Text all函数处理空文本返回True的疑问

问题解答

这是设计如此,并非Bug。

这种现象源于逻辑中的**空真(vacuous truth)**规则:当全称量词(对应这里的all函数)作用于空集合时,结果为真。简单来说,当没有任何元素需要验证时,“所有元素都满足某个条件”这个陈述会自动成立——毕竟找不到任何违反条件的元素。

结合你的代码来看:

  • T.filter C.isNumber (T.pack "asad")返回空文本"",里面没有任何字符
  • T.all C.isSymbol需要检查文本里的每一个字符是否是符号,但因为文本为空,不存在需要验证的字符,所以直接返回True

这种行为不是Data.Text特有的,Haskell中普通列表的all函数也遵循同样规则,比如:

all even []  -- 返回 True

内容的提问来源于stack exchange,提问作者Cloxure

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 15:30:52