【问题标题】:Iterate over a map in Rascal在 Rascal 中迭代地图
【发布时间】:2020-08-24 22:23:14
【问题描述】:

我正在尝试在此结构中的地图上创建地图理解:

map[Node, set[Node]]

我的地图理解是这样的:

(currentNode: {currentNode} | <currentNode, _> <- dominanceSet);

但是我收到了这个错误:

有没有办法使用另一种策略来实现类似的行为?

【问题讨论】:

  • map[Node, set[Node]]只是目标类型,还是这也是dominanceSet的类型?
  • 我根据错误信息猜测两者都是,我只是想确定一下,这样我才能给出适当的答案。
  • 这里也一样。不介意我做了马克吗?
  • 没关系,谢谢!

标签: functional-programming rascal


【解决方案1】:

Rascal 中的地图生成器生成键值(而不是某种形式的“条目”或元组)。

所以代码是:

(currentNode: {currentNode} | currentNode <- dominanceSet)

请注意,标准库中有一些专门的函数可以更快地建立索引关系,例如在Relations 中有map[&amp;K, set[&amp;V]] index(rel[&amp;K, &amp;V] R);

【讨论】:

  • 所以我从错误消息中假设dominanceSet 实际上是一张地图。
猜你喜欢
  • 1970-01-01
  • 2011-12-08
  • 2020-08-11
  • 1970-01-01
  • 2013-01-07
  • 1970-01-01
  • 2011-03-09
  • 2020-06-29
  • 2015-05-31
相关资源
最近更新 更多