Rascal中的数据和函数可以分散在不同的源文件中,并在导入时相应地合并。换句话说,Rascal支持open data and open functions。那么Rascal解决了表达问题?它的设计是为了做到吗?
答案 0 :(得分:2)
我认为写Rascal“解决”表达式问题,有点强,但你可以说你可以轻松地在其中编写公开可扩展的表达式语法实现。它的设计完全符合此要求,请参阅http://www.rascal-mpl.org/from-functions-to-term-rewriting-and-back/
一方面,人们可以编写不受Rascal表达式问题困扰的程序,正是因为你说的原因:数据和函数都是公开可扩展的,它们通过模式匹配动态调度一起工作。
另一方面,在Rascal中编写不可扩展的实现也非常容易。特别是在使用当前访问或切换语句时,这些语句不是公开可扩展的。此外,如果您编写一组相互递归的函数,则可能很难以不可预见的方式扩展它们。我们还致力于语言功能,以涵盖扩展这些类型的设计。那是为了将来。