您好以下代码是一个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'的应用程序的结果是应用'=='的结果。 –