【发布时间】:2011-12-12 13:09:44
【问题描述】:
前段时间我问了一个关于函数elemhere的问题,但我认为答案并不完全令人满意。我的问题是关于表达式:
any (`elem` [1, 2]) [1, 2, 3]
我们知道elem 在反引号中,所以elem 是一个中缀,我的解释是:
1 `elem` [1, 2] -- True
2 `elem` [1, 2] -- True
3 `elem` [1, 2] -- False
最后它将返回True,因为它是any,而不是all。这看起来不错,直到我看到 isInfixOf 的类似表达式:
any (isInfixOf [1, 2, 3]) [[1, 2, 3, 4], [1, 2]]
在这种情况下,一个合理的解释似乎是:
isInfixOf [1, 2, 3] [1, 2, 3, 4] -- True
isInfixOf [1, 2, 3] [1, 2] -- False
我想知道为什么它们从那时起就以如此不同的方式使用
any (elem [1, 2]) [1, 2, 3]
会报错,所以会报错
any (`isInfixOf` [[1, 2, 3, 4], [1, 2]]) [1, 2, 3]
【问题讨论】:
-
请尝试改写问题。你问
elem和isInfixOf之间的区别吗?从定义/文档中应该可以清楚地看到这一点。 -
@larsmans 不完全是。我知道它们是什么,但我想问的是如何使用它们以及为什么
-
考虑改用
flip elem [1, 2]。 -
谢谢,这是原始版本。正如我所说,我的问题主要涉及如何以及为什么而不是什么。现在已经解决了。
标签: haskell