在haskell中的一行中查找单词

在haskell中的一行中查找单词,haskell,functional-programming,pattern-matching,Haskell,Functional Programming,Pattern Matching,我(Haskell的新手)想知道第(行中)行中是否有一个单词。我看到了一些实现它的函数,比如:elem、isInfixOf Prelude DL> isInfixOf "new" "I am new to Haskell" True Prelude DL> elem "new" ["I am", "new to", "Haskell"] False 如何在字符串列表中的每个字符串上实现'isInfixOf' 如果您希望实现: any (isInfixOf "new") ["I a

我(Haskell的新手)想知道第(行中)行中是否有一个单词。我看到了一些实现它的函数,比如:elem、isInfixOf

Prelude DL> isInfixOf "new" "I am new to Haskell"
True

Prelude DL> elem "new" ["I am", "new to", "Haskell"]
False

如何在字符串列表中的每个字符串上实现'isInfixOf'

如果您希望实现:

any (isInfixOf "new") ["I am", "new to", "Haskell too!"]
如果您想要Bool的列表:

map (isInfixOf "new") ["I am", "new to", "Haskell too!"]

您可以通过将
isInfixOf
函数映射到
字符串列表上来实现这一点,如下所示:

ghci>> map (isInfixOf "new") ["I am", "new to", "Haskell"]
[False, True, False]
map
计算列表中每个元素的谓词

在此基础上,您可以使用
Data.List
中的其他函数来了解整个列表的更多信息:

ghci>> any (isInfixOf "new") ["I am", "new to", "Haskell"]
True
ghci>> all (isInfixOf "new") ["I am", "new to", "Haskell"]
False

你期望的回报类型是什么?一个布尔值列表,告诉你这个字符串是否是列表中每个字符串的中缀?小文体注释,
isInfixOf
通常被使用。。。嗯,中缀(不是因为它谈论中缀的东西,而是因为它在语法上是如何工作的)。所以你通常会看到
“new”`isInfixOf`“我是哈斯克尔的新手”
。对于答案,您可能会看到它被用作一个部分,例如
any(“new”`isInfixOf`)[…]