如何修复我的 inserPair haskell 代码以适用于所有测试?
How can I fix my inserPair haskell code to work for all of the tests?
指定将新对插入键值对列表的函数。如果要插入的键已经在列表中,则相应的值将被覆盖,否则,该对将附加到列表的末尾。
它不适用于案例 2。任何人都可以帮助我在那里更改我的代码以修复我的代码吗?
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
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)]
第三种情况没有意义:键仍有可能出现在列表的其余部分 xs
。因此,您应该在该列表上递归。第二种情况还应该添加xs
作为尾部:剩余元素的列表:
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
需要填写…
部分的地方
指定将新对插入键值对列表的函数。如果要插入的键已经在列表中,则相应的值将被覆盖,否则,该对将附加到列表的末尾。 它不适用于案例 2。任何人都可以帮助我在那里更改我的代码以修复我的代码吗?
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
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)]
第三种情况没有意义:键仍有可能出现在列表的其余部分 xs
。因此,您应该在该列表上递归。第二种情况还应该添加xs
作为尾部:剩余元素的列表:
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
需要填写…
部分的地方