編輯:很難描述我正在試圖做的,但這裏的一個嘗試(從評論):哈斯克爾比較所有列表項
我建立一個wordfeud求解器,所以我有一個詞,一些字母(都是char列表)。我將這個(How to find the frequency of characters in a string in Haskell?)應用於這兩個列表以獲取所有字母的頻率。我現在正在做的是遍歷'word'char列表,並檢查'letters'char列表中是否有足夠的字符。
我寫了一個Haskell函數,它通過對兩個列表的項目應用一個函數並比較結果來比較兩個列表。
比較像這樣做:
hasLetters' :: [Char] -> [Char] -> Bool
hasLetters' word letters = (getCharOccurrence (head word) (getCharOccurrences word)) <= (getCharOccurrence (head word) (getCharOccurrences letters))
這只是比較單詞的第一個字母的出現。但是所有的單詞都應該進行比較(並且所有單詞的結果都應爲TRUE)。
我真的不知道如何做到這一點。我找到了可以讓我定義一個謂詞的'all'方法,這非常好。它看起來像這樣:
all (<= (getCharOccurrence (head word) (getCharOccurrences letters)))
(我認爲這是正確的) 它確保每一個進入列表項小於或等於所提供的功能的結果。
但是:'all'方法需要另一個參數。這將是定義應該與謂詞進行比較的「源」參數。這將是很容易當這只是一個清單的話,我會做這樣的事情:
all (<= (getCharOccurrence (head word) (getCharOccurrences letters))) [0..10]
但問題是:我沒有這樣的結果列表,我需要它比較的結果:
(getCharOccurrence (head word) (getCharOccurrences letters))
我想,我可以用「地圖」功能的「字」字符表此功能適用於每一個角色,但我不知道如何使用它。我開始是這樣的:
map (getCharOccurrence (head word) (getCharOccurrences word)) word
但這是錯誤的。
所以我(想我)需要:將上述函數應用於'單詞'字符列表的所有字符,並將其與謂詞進行比較。
但也許我只是認爲錯誤的方式。我是絕對的Haskell /函數式編程新手。請幫我:-)
可不可以給的是什麼,你要解決一個簡明的例子嗎?我發現很難從一個函數名解碼,甚至沒有做你想做的事情。 –
如果不清楚,我很抱歉,很難形容。但是我正在構建一個wordfeud求解器,所以我有一個單詞和一些字母(都是char列表)。我將這個(http://stackoverflow.com/questions/7108559/how-to-find-the-frequency-of-characters-in-a-string-in-haskell)應用到這兩個列表中以獲得所有字母的頻率。我現在正在做的是遍歷'word'char列表,並檢查'letters'char列表中是否有足夠的字符。希望有所幫助。 –
我也不明白你想要什麼,難道你只是給一些簡單的例子嗎? – leftaroundabout