首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将我的inserPair haskell代码修复到所有测试中?

如何将我的inserPair haskell代码修复到所有测试中?
EN

Stack Overflow用户
提问于 2022-03-20 15:19:51
回答 1查看 33关注 0票数 -1

指定将新对插入到键值对列表中的函数。如果要插入的键已经在列表中,则相应的值将被覆盖,如果没有,则将该对追加到列表的末尾。它不适用于第二种情况。有人能帮我修复我的代码吗?

代码语言:javascript
运行
复制
insertPair :: Eq a => (a,b) -> [(a,b)] -> [(a,b)]
insertPair (a,b) [] =[(a,b)] -- case 1
insertPair (a,b) ((c,d):xs) 
 | a == c = [(c,b)] --case 2
 | otherwise = ((c,d):xs) ++ [(a,b)] --case 3 
代码语言:javascript
运行
复制
insertPair (5,"haskell") [(0,"c++"),(5,"python"),(4,"rust")] == [(0,"c++"),(5,"haskell"),(4,"rust")]
insertPair (3,"haskell") [(0,"c++"),(5,"python"),(4,"rust")] == [(0,"c++"),(5,"python"),(4,"rust"),(3,"haskell")]
insertPair (4,"go") [] == [(4,"go")]
insertPair ('b',False) [('a',False), ('b',True)] == [('a',False), ('b',False)]
insertPair ('b',False) [('a',False)] == [('a',False), ('b',False)]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-20 15:26:37

第三种情况没有任何意义:仍然有可能在列表xs的其余部分中进一步出现密钥。因此,你应该重新考虑一下这份清单。第二种情况还应该添加xs作为尾:剩余元素的列表:

代码语言:javascript
运行
复制
insertPair :: Eq a => (a,b) -> [(a,b)] -> [(a,b)]
insertPair (a,b) [] = [(a,b)]
insertPair (a,b) ((c,d):xs) 
 | a == c = (c,b) : xs  -- add xs
 | otherwise = (c,d) : insertPair …  -- todo: recurse

您需要在其中填写部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71548026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档