具有可自动更新变量的语言

时间:2016-03-02 09:52:09

标签: algorithm programming-languages graph-algorithm

某处存在具有可自动更新变量的编程语言。 例如:

a = 100
b = a * 3 + 1    // 301
c = sin(b) + a   // 99.1428

修改'a'后:a = 105,自动重新计算相应的变量:

b: 316
c: 104.3053

如果存在此类语言,会使用哪些方法来实现此行为?

2 个答案:

答案 0 :(得分:2)

您想要的是延期评估。这在电子表格应用程序中很常见。我认为R语言也允许类似的东西。

您几乎可以用任何语言实现它。

通常的方法是定义一个终结类(比如Number)并覆盖运算符(如果语言支持它,比如c ++,C#或python)来返回树中的节点。因此* 3 + 1将等同于(b = Sum(Mult(a,Number(3)),Number(1))。一旦你有这样的东西,你可以改变a的值与访问器和然后请求重新评估顶级节点,从而为您提供所需的值。

可能已经有几个实现了。实现起来并不难,但定义所需的所有类和隐式转换都有点乏味。如果你想优化评估,它会变得更复杂。

答案 1 :(得分:2)

您可能希望一般地看一下Functional Reactive Programming,特别是Elm,它们在函数式编程环境中提供了这种计算方式。