2

Rascal 中的数据和函数可以分散在不同的源文件中,并在导入时进行相应的合并。换句话说,Rascal 支持开放数据和开放函数。所以 Rascal 解决了表达问题?是这样设计的吗?

4

1 回答 1

2

我认为写 Rascal “解决”了表达式问题,有点强,但是您可以说您可以轻松地在其中编写表达式语法的公开可扩展实现。它正是为此而设计的,请参阅http://www.rascal-mpl.org/from-functions-to-term-rewriting-and-back/

一方面,可以编写不受 Rascal 表达式问题困扰的程序,正是因为您所说的:数据和函数都是可公开扩展的,它们通过模式匹配的动态调度协同工作。

另一方面,在 Rascal 中编写不可扩展的实现也很容易。特别是在使用当前访问或 switch 语句时,它们是不可公开扩展的。此外,如果您编写一组相互递归的函数,则可能很难以不可预见的方式扩展它们。我们还在研究语言功能以涵盖扩展这些类型的设计。那是为了未来。

于 2013-10-29T20:20:13.803 回答