【发布时间】:2014-06-28 07:33:40
【问题描述】:
我是函数式编程语言的新手,需要帮助解决我的一个问题。
我需要在两个序列元组之间创建一个映射:
A = tuple1(tuple1(tuple1(x,y),z),a)
B = tuple2(tuple2(tuple2(1,2),3),4)
现在我需要类似下面的东西:
C = ((x,1),(y,2),(z,3),(a,4)) 如果我搜索说 x 那么我需要得到 1 ;
元组出现的次数未知,但两个元组结构相似。我无法理解和映射stackoverflow中类似问题的解决方案。所以有解释的解决方案会很有帮助
【问题讨论】:
-
我认为正确的解决方案是首先避免创建这样的嵌套元组结构。他们不容易相处。改为创建列表,您可以使用
zip和toMap来获得您想要的。 -
你能解释一下你想要达到的目标吗?使用嵌套元组(甚至嵌套列表)是否必不可少?
-
这对我来说是必要的,现在可能无法更改结构。我正在设计编译器,这是我的解释器设计所必需的。其中我需要跟踪函数参数,即传递的值的 id。解释整体结构可能有点复杂。
-
如果您正处于编译器的设计阶段,那么您可以(并且可能应该)更改它。从 id name 到 value 的映射使用元组是合理的,但嵌套元组似乎是一种设计气味
-
感谢各位帮忙。特别是@Jasper-M 解决方案很有用。我做了一些修改以适应我的需要。正如你们中的一些人所建议的那样改变并不容易,因为我需要努力与 Parser 一起改变检查器阶段。现在我意识到我应该如何考虑 Parser。
标签: scala functional-programming