Rascal 中的数据和函数可以分散在不同的源文件中,导入时会相应地合并。换句话说,Rascal 支持 open data and open functions 。那么Rascal解决了表达问题吗?它是这样设计的吗?
最佳答案
我认为写 Rascal“解决”表达式问题有点强,但你可以说你可以轻松地在其中编写表达式语法的开放可扩展实现。它正是为此而设计的,请参阅http://www.rascal-mpl.org/from-functions-to-term-rewriting-and-back/
一方面,我们可以编写不受 Rascal 中表达式问题困扰的程序,正是出于您所说的原因:数据和函数都是可公开扩展的,并且它们通过模式匹配动态调度来协同工作。
另一方面,在 Rascal 中编写不可扩展的实现也非常容易。特别是在使用当前访问或 switch 语句时,这些语句不可公开扩展。此外,如果您编写一组相互递归的函数,则可能很难以不可预见的方式扩展它们。我们还在研究语言功能以涵盖扩展这些类型的设计。这是为了 future 。
关于rascal - Rascal 解决了表达式问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19663349/