什么是被称为Assignment语句的表达式?

时间:2011-09-24 14:55:51

标签: functional-programming variable-assignment imperative-programming

在命令式编程中,使用语句,您可以执行以下操作:

a = 10
b = a * 2
print a # 20

我一直在想,表达式中的等价物应该是这样的:

print with(a=10){with(b=a*2){return b}}

这是用诅咒的python编写的,但它应该没关系,它应该说明我的意思。不是改变程序中变量的状态(然后永远保持变化),而是在块范围内为该范围内的任何表达式更改它。

这种事情可能有一个名字。我不知道任何纯函数式语言,但我想这种事情对于在赋值语句不存在时计算临时值非常有用。有谁知道它叫什么,有什么语言内置,以及我可以在哪里找到更多相关信息?

1 个答案:

答案 0 :(得分:2)

嗯,有let-bindings:

let a = 10 in
let b = a * 2 in
b

这些语言存在于大多数函数式语言中,尽管有时会使用不同的语法(我知道最明显的异常是lisp,它使用(let ((a 10)) (let ((b (* a 2))) b));还有letreclet*对分配的表达式的不同限制可以参考)。还可以在单​​个let中创建多个绑定。

请注意,正式地说,它不会在短时间内更改变量,而是引入一个带有新变量的新范围。