关于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
相关产品推荐
相关产品推荐

