Haskell相当于包含

时间:2014-12-30 14:48:33

标签: haskell ghc ghci

基本上我正在尝试扫描字符串以查找包含字符的单词,并计算找到具有该字符的单词数。我只是想知道是否有办法检查一个单词是否包含一个字符。

目前的代码如下:

let w = "Hello i'm kind of new to Haskell, but so far it's great!"
length $ filter (== 'n') w

这会在字母n上出现任何问题,如果在一个单词中有2个n它会将其计为2而不是1,我基本上想要检查单词是否包含字母输入然后得到长度。< / p>

由于

1 个答案:

答案 0 :(得分:9)

您可以使用elem

> 'n' `elem` w
True

如果以前没有见过它,为了将来参考,实际上有一个搜索引擎会根据Haskell的类型查找函数。如果我在hoogle上搜索Char -> String -> BoolString -> Char -> Bool,则elem是第二个结果。这可以是一个非常强大的工具,用于发现您不知道的功能。


更仔细地阅读您的问题并准确地了解您想要做什么,您可以非常轻松地合并wordselemfilter以计算字符串中的字数包含特定字母的内容:

wordsWithLetter :: Char -> String -> Int
wordsWithLetter c w
    = length
    $ filter (c `elem`)
    $ words w

此处filter (c `elem`)将删除所有不包含c的字词,因此使用length计算剩余字数会告诉您该字母包含多少字。