在别名rel [loc,str,int,int]上进行迭代时,“无法计算模式的类型”

时间:2019-01-27 11:02:17

标签: rascal

我有一个rel[loc, str, int, int],别名为ECCModel

在函数中对其进行迭代会导致错误,当模式的元素称为location时,将导致错误“无法计算模式的类型”。当命名为location以外的其他名称时,错误消失。在Rascal中,“位置”是保留字吗?不管出现什么错误,它都可以编译并正常运行。

可以通过以下方法产生错误

alias ECCModel = rel[loc, str, int, int]
map[str,int] Foo(ECCModel bar)
{
    return (y : z | <location, y, z, _> <- bar);
}

这是预期的行为吗?

1 个答案:

答案 0 :(得分:1)

这不是预期的行为,location不是保留字,而loc是保留字。 我认为这是当前编译器的故障。 为了您的澄清:我们目前有Rascal的三种实现:

  • Rascal解释器。
  • 当前(有时也称为“旧”)编译器。
  • 我们正在开发的新编译器尚未发布。

您的示例在解释器和新编译器中运行良好。因此,您报告的问题将随着时间的流逝而消失。