【问题标题】:What is the imperative model of Rascal?Rascal 的命令式模型是什么?
【发布时间】:2013-11-21 10:29:45
【问题描述】:

Rascal 感觉既实用又必要。它支持任务。但它也声称是纯净的。所以我想像分配这样的功能是模拟的。那么什么是 Rascal 的命令式模型,通过 monad 的 Haskell 方式或通过唯一性的 Clean 方式?

【问题讨论】:

    标签: rascal


    【解决方案1】:

    Rascal 是纯粹的,因为它的数据实例是不可变的,并且一切(函数参数传递、赋值、调用 Java 方法)都是按值传递的。不可能有别名 (*)。

    即使使用全局变量或类似的捕获堆栈位置的闭包,所有赋值都是按值进行的,但它们是真正的赋值。 I.o.w.没有单子,没有唯一性类型,只有简单直接的副作用,但没有别名和突变。

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

    (*) 你可以使用闭包创建一种别名形式,但你必须先跳过几个高环才能做到这一点。

    【讨论】:

      猜你喜欢
      • 2014-05-09
      • 2010-12-26
      • 2011-01-16
      • 1970-01-01
      • 2010-09-08
      • 2013-11-17
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多