某处存在具有可自动更新变量的编程语言。 例如:
a = 100
b = a * 3 + 1 // 301
c = sin(b) + a // 99.1428
修改'a'后:a = 105,自动重新计算相应的变量:
b: 316
c: 104.3053
如果存在此类语言,会使用哪些方法来实现此行为?
答案 0 :(得分:2)
您想要的是延期评估。这在电子表格应用程序中很常见。我认为R语言也允许类似的东西。
您几乎可以用任何语言实现它。
通常的方法是定义一个终结类(比如Number)并覆盖运算符(如果语言支持它,比如c ++,C#或python)来返回树中的节点。因此* 3 + 1将等同于(b = Sum(Mult(a,Number(3)),Number(1))。一旦你有这样的东西,你可以改变a的值与访问器和然后请求重新评估顶级节点,从而为您提供所需的值。
可能已经有几个实现了。实现起来并不难,但定义所需的所有类和隐式转换都有点乏味。如果你想优化评估,它会变得更复杂。
答案 1 :(得分:2)
您可能希望一般地看一下Functional Reactive Programming,特别是Elm,它们在函数式编程环境中提供了这种计算方式。