您好以下代碼是一個wordfeud程序。它允許您搜索匹配前綴,後綴和一些字母的單詞列表。我的問題是,我不想使用底部的列表,而是使用包含單詞的外部文本文件並將其加載到列表中。我如何去做這件事?Haskell將外部txt文件加載到列表中
count :: String -> String -> Int
count _[] = 0
count [] _ = 0
count (x:xs) square
|x `elem` square = 1 + count xs (delete x square)
|otherwise = count xs square
check :: String -> String -> String -> String -> Bool
check prefix suffix word square
| (length strippedWord) == (count strippedWord square) = True
| otherwise = False
where
strippedWord = drop (length prefix) (take ((length word) - (length suffix)) word)
wordfeud :: String -> String -> String -> [String]
wordfeud a b c = test1
where
test =["horse","chair","chairman","bag","house","mouse","dirt","sport"]
test1 = [x| x <- test, a `isPrefixOf` x, b `isSuffixOf` x, check a b x c]
有關您的代碼的兩個簡短提示:1.在Haskell函數應用程序中優先於中綴運算符。也就是說,像'length strippedWord == count strippedWord square'這樣的表達式相當於'(length strippedWord)==(count strippedWord square)'。 2.在函數check中,函數的結果是相等性檢查的值。因此,您可以通過相等性檢查來替換警衛(帶有豎條的部分)。 –
你的意思是我可以用這條線代替衛兵「長度strippedWord ==計數strippedWord square = True」? – tutu
不好意思,我的意思是你可以使用'check prefix suffix word square = length strippedWord == count strippedWord square'。也就是說,'check'的應用程序的結果是應用'=='的結果。 –