什么是Rascal的命令模型?

时间:2013-11-21 10:29:45

标签: rascal

Rascal既有功能又有必要。它支持作业。但它也声称是纯粹的。所以我想模拟分配的功能。那么什么是Rascal的命令模型,通过monads的Haskell方式或通过唯一性的Clean方式?

1 个答案:

答案 0 :(得分:1)

Rascal只是纯粹的,因为它的数据实例是不可变的,并且在某种意义上,所有东西(函数参数传递,赋值,调用Java方法)都是值传递的。没有可能的别名(*)。

即使使用全局变量或相似的闭包来捕获堆栈位置,所有赋值都是按值计算的,但它们是真正的赋值。 I.o.w.没有monad,没有唯一性类型,只有简单和直接的副作用,但没有锯齿和没有变异。

使Rascal中的Java代码副作用“安全”的原因是发送/接收数据始终通过(反)序列化不可变值,即您实际上无法通过Java获取对Rascal的有状态数据的引用(除非您开始使用intloc编码指针: - )

(*)你可以使用闭包创建一种别名形式,但是你必须首先跳过一些高位来做这样的事情。