Rascal 感觉既实用又必要。它支持任务。但它也声称是纯净的。所以我想像分配这样的功能是模拟的。那么什么是 Rascal 的命令式模型,通过 monads 的 Haskell 方式或通过唯一性的 Clean 方式?
问问题
74 次
1 回答
1
Rascal 是纯粹的,因为它的数据实例是不可变的,并且一切(函数参数传递、赋值、调用 Java 方法)都是按值传递的。没有可能的别名 (*)。
即使使用全局变量或捕获堆栈位置的类似闭包,所有分配都是按值分配的,但它们是真正的分配。Iow 没有单子,没有唯一性类型,只有简单直接的副作用,但没有混叠和突变。
使 Rascal 中的 Java 代码“安全”的副作用是发送/接收数据始终是通过(反)序列化不可变值,即您确实无法通过 Java 将有状态数据引用到 Rascal(除非您开始编码带有int
或的指针loc
:-)
(*) 您可以使用闭包创建一种别名形式,但您必须先跳过几个高环才能做到这一点。
于 2013-11-21T14:32:53.393 回答