首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >串联-2个列表

串联-2个列表
EN

Stack Overflow用户
提问于 2011-12-06 00:00:03
回答 3查看 753关注 0票数 0

我需要一些帮助:/

我有个养鸡名单:

代码语言:javascript
运行
复制
xs = [("a",1,[(11,"aa","aa"),(22,"bb","bb")]),("b",2,[(33,"cc","cc"),(44,"dd","dd")])]

我还需要创建一个函数来更改"a“和1的值(列表中第一个三元组的前两个值)。

我试图通过拆分我的列表来解决这个问题:

代码语言:javascript
运行
复制
xs1 = ("a",1,[(11,"aa","aa"),(22,"bb","bb")])
xs2 = ("b",2,[(33,"cc","cc"),(44,"dd","dd")])

然后:

代码语言:javascript
运行
复制
changeXs (_, _, z) x y = (x,y,z)
newXs x y = [changeXs xs1 x y]

这适用于change xs1。我认为现在使用++将xs2连接到我的newXs函数应该很容易。但是它不能工作(我相信我不能使用带有模式匹配的++,对吗?)

关于如何将xs2连接到newXs函数,有什么想法吗?或者任何其他解决问题的方法?

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-06 00:08:18

代码语言:javascript
运行
复制
insert_new_xy x y ((_, _, z) : rest) = (x, y, z) : rest

测试:

代码语言:javascript
运行
复制
*Main> insert_new_xy "foo" 42 xs
[("foo",42,[(11,"aa","aa"),(22,"bb","bb")]),("b",2,[(33,"cc","cc"),(44,"dd","dd")])]

((_, _, z) : rest)模式匹配一个列表,该列表的头部是一个由三个元素组成的元组,并将该元组中的最后一个元素与列表的尾部绑定。然后,只需重新组合列表,使用给定的xy和提取的z创建一个新的元组,并将其添加到尾部。

票数 4
EN

Stack Overflow用户

发布于 2011-12-06 00:27:08

你的问题出在++上。

++的类型为[a] -> [a] -> [a]

换句话说,它接受两个列表并将它们“放在一起”

您想要的是向[a]添加一些a

试一试

(:) :: a -> [a] -> [a]

票数 0
EN

Stack Overflow用户

发布于 2011-12-06 01:39:26

不能将newXs x y (即list )与xs2 (即tuple )连接在一起。

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

https://stackoverflow.com/questions/8388102

复制
相关文章

相似问题

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