2013-12-17 56 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搜索的工作原理那也。