2013-12-17 51 views
1

Haskell有一个函数可以让您找到某个单词的特定元素的编号,即[char],所以“FROG”中'F'的元素编号为0。那个字母出现多于一次的字,这个函数可以返回一个字母位置列表,即“TEETER”中的'E'将是[1,2,4]?查找字母数字的Haskell函数

回答

6

您正在寻找的两个功能是Data.List,它们是elemIndexelemIndices

elemIndices :: Eq a => a -> [a] -> [Int] 
elemIndex :: Eq a => a -> [a] -> Maybe Int 


λ> elemIndex 'F' "FROG" 
Just 0 
λ> elemIndices 'E' "TEETER" 
[1,2,4] 

在寻找这样的事情是经常有帮助写下你想要的类型,然后(如果可能)概括它。您可以通过这种方式经常在标准库中找到东西。

+3

值得注意的是,这两个函数是[hoogle的第二和第三个结果](http://www.haskell.org/hoogle/?hoogle=%3A%3A+String+-%3E+Char+-% 3E +诠释)甚至粗略(不正确)的猜测类型。 –

+0

@ ThomasM.DuBuisson相当不错,虽然有趣的是它优先于'throwErrnoPath'高于另外两个。 – DiegoNolan

+0

@Andrew Myers感谢我正在寻找的东西。 – user3094936

1

类型为hoogle

[a]->a->Int 

这一点,看到这个

elemIndex :: Eq a => a -> [a] -> Maybe Int 

编辑 -

我错过了你问题的第二部分....但对于以相似的hoogle搜索的工作原理那也。