Haskell - 检查列表中的任何字符串是否在字符串中

Bar*_*Ace 1 haskell

我正在寻找本质上与此相反的方法,并且快疯了。

反转下面的参数以检查列表中的任何元素的东西在字符串中。

代替: any (isInfixOf "Hask") ["I am", "new to", "Haskell"]

我需要: any (isInfixOf ["I am", "new to", "Haskell"]) "I am new to"

任何帮助表示赞赏!

Wil*_*sem 7

您可以使用 lambda 表达式将其编写为:

any (\x -> isInfixOf x "I am new to") ["I am", "new to", "Haskell"]
Run Code Online (Sandbox Code Playgroud)

x因此,这是我们调用的列表中的项目isInfixOf x "I am new to"。这意味着如果列表中的一个这样的元素是 的中缀"I am new to",它将返回True,否则将返回False

您还可以使用flip :: (a -> b -> c) -> b -> a -> c

any (flip isInfixOf "I am new to") ["I am", "new to", "Haskell"]
Run Code Online (Sandbox Code Playgroud)

或使用运算符部分[Haskell-wiki]

any (`isInfixOf` "I am new to") ["I am", "new to", "Haskell"]
Run Code Online (Sandbox Code Playgroud)