在haskell中找到行内的单词

时间:2016-11-07 22:56:40

标签: haskell functional-programming pattern-matching

I(Haskell的新手)想要找出是否存在行(行)中的单词。我看到很少的功能来实现它:elem,isInfixOf

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

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

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

2 个答案:

答案 0 :(得分:4)

如果您希望成真:

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

如果你想要一个Bool列表:

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

答案 1 :(得分:3)

您可以将isInfixOf函数映射到Strings列表,如下所示:

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