【发布时间】:2019-05-19 15:20:34
【问题描述】:
我必须创建一个函数邻居 :: [((String, String), Int)] -> String -> [(String, Int)]
这是我想出的功能:
neighbours pairs@((x1,x2):xs) inputWord
| pairs == [] = []
| fst x1 == inputWord = ((snd x1), x2) : (neighbours xs inputWord)
| snd x1 == inputWord = ((fst x1), x2) : (neighbours xs inputWord)
| otherwise = (neighbours xs inputWord)
输出应该是一个元组列表,其中包含与元组 x1 中的 inputWord 配对的字符串以及整数 x2
问题是我得到了我认为不应该存在的非详尽模式。
我尝试将pairs == [] = [] 替换为xs == [] = []
这使得非穷举模式在列表不为空时消失,但也阻止了函数遍历元组的最后一个元组。
【问题讨论】:
-
既然你用
pairs@((x1,x2):xs)作为模式,pairs == []永远不会是真的。 -
我不太明白你的意思
-
你明白
(_:_)模式的含义吗?
标签: haskell