gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:38:14 24 4
gpt4 key购买 nike

你好,你能帮我看看如何增加元组的最后一个元素吗?目前我有这个元组列表

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

我想做的是每次购买商品时将其递增 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 = []

我仍在增加它,但我卡住了。请帮助我,我仍然是这种语言的新手。谢谢!

编辑

现在一切正常,但是您如何输出列表的其余部分?我试过 recordSale xs trackArtist trackTitle 但是当我测试它时,我增加的旧记录也被打印出来而不是被修改?假设我增加了 apple 它会打印的是这个

[("Apple", "Fruit Section", 2),("Water", "Drink Section", 1),("Squash", "Drink Section", 1), ("Apple", "Fruit Section", 1)]

它复制记录而不是仅仅加 1

最佳答案

这还不错,但假设您正在尝试递增“Squash”,这是示例项目列表中的第二个元素。 销售 做什么?它检查列表中的第一项 Water 是否等于 Squash。由于水不等于南瓜,它会遇到 otherwise 情况并返回 []

所以在我们得到 [] 返回之前,所有这些似乎都是正确的 - 让我们以其他方式更改代码。显然我们不想丢弃整个列表,那是愚蠢的。您应该重写它以保留刚刚比较的项目并将其连接到应用于列表其余部分的 sales 结果 (xs)。

在你修复了 otherwise 分支之后,你会注意到整个列表在你增加的项目被丢弃后 - 我认为一旦你完成这个问题就会突然出现.

附言解雇将 Squash 放入饮水区的员工。

关于list - Haskell 递增元组的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11377706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com