Functional programming 什么';调用的赋值语句的表达式等价物是什么?

Functional programming 什么';调用的赋值语句的表达式等价物是什么?,functional-programming,variable-assignment,imperative-programming,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编写的,但这不重要,它应该说明我的意思。它不是改变程序中变量的状态(然后一直保持不变),而是在块范围内对该范围内的任何表达式进行更改 这类事情可能有个名字。我不知道任何纯函数式语言,但我认为当赋值语句不存在时,这种方法对于计算临时值非常有

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

a = 10
b = a * 2
print a # 20
我一直在想,在表达式中,等价物应该是这样的:

print with(a=10){with(b=a*2){return b}}
这是用断章取义的python编写的,但这不重要,它应该说明我的意思。它不是改变程序中变量的状态(然后一直保持不变),而是在块范围内对该范围内的任何表达式进行更改


这类事情可能有个名字。我不知道任何纯函数式语言,但我认为当赋值语句不存在时,这种方法对于计算临时值非常有用。有人知道它叫什么吗?什么语言内置了它,我在哪里可以找到更多关于它的信息?

嗯,有let绑定:

let a = 10 in
let b = a * 2 in
b
这些都存在于大多数函数式语言中,尽管有时使用不同的语法(我所知道的最明显的异常是lisp,它使用
(let((a 10))(let((b(*a 2)))b))
;还有
letrec
let*
,它们对所分配的表达式可以引用的内容设置了不同的限制)。还可以在一个
let
中创建多个绑定

请注意,在形式上,它不会在短时间内更改变量,而是引入了一个新的范围和新的变量