Haskell递增元组的最后一个元素

M.G*_*son 2 haskell tuples list

嗨,你能帮我解决一下如何递增元组的最后一个元素.目前我有这个元组列表

items :: [Grocery]
items = [("Water", "Drink Section", 1),
         ("Squash", "Drink Section", 1),
         ("Apple", "Fruit Section", 1),
         ("Plates", "Disposable Section", 1),
         ("Plates", "Ceramic Section", 1)]
Run Code Online (Sandbox Code Playgroud)

而我想要做的是每次购买物品时将其增加1并输出数据库.目前我有这个

sales:: [database] -> String -> String-> [database]
sales db itemName sectionName = []
sales ((item, section, qty): xs) itemName sectionName 
     | item == itemName && section== sectionName = [(item, section, qty + 1)]
     | otherwise = []
Run Code Online (Sandbox Code Playgroud)

我仍然在增加它,我陷入困境.请帮助我,我仍然是这种语言的新手.谢谢!

编辑

它现在全部工作,但你如何输出列表的其余部分?我试过recordSale xs trackArtist trackTitle但是当我测试它时,我增加的旧记录也被打印而不是被修改?让我说我增加苹果它打印的是这个

[("Apple", "Fruit Section", 2),("Water", "Drink Section", 1),("Squash", "Drink Section", 1), ("Apple", "Fruit Section", 1)]
Run Code Online (Sandbox Code Playgroud)

它复制记录而不是只添加1

Tho*_*son 5

这还不错,但是让我们假装你试图增加"Squash",这是你的示例项目列表中的第二个元素.怎么sales办?它检查列表中的第一个项目Water是否等于壁球.由于水不等于挤压,它会击中otherwise表壳并返回[].

所以这一切似乎都在我们[]回来之前 - 让我们改变代码.显然我们不想丢掉整个列表,这将是愚蠢的.您应该重写它以保留刚刚比较的项目并将其连接到sales应用于列表其余部分的结果(xs).

你得到后otherwise分支固定你会增加你的项目被扔掉后,发现整个列表-我认为一个会弹出右出你一旦你完成了这个问题.

PS解雇将壁球放入饮酒区的员工.