有变量真正起作用的编程语言吗?

Mat*_*314 3 variables programming-languages dataflow function

例如,我会写:

x = 2
y = x + 4
print(y)
x = 5
print(y)
Run Code Online (Sandbox Code Playgroud)

它会输出:

6 (=2+4)
9 (=5+4)
Run Code Online (Sandbox Code Playgroud)

此外,是否有任何可能实际有用的情况?

澄清:是的,lambdas等解决了这个问题(他们是我如何得出这个想法); 我想知道是否存在默认的特定语言:不需要或不需要函数或lambda关键字.

Mar*_*off 7

Haskell会中途遇见你,因为基本上所有东西都是函数,但变量只绑定一次(意味着你不能x在同一范围内重新分配).

可以很容易地考虑y = x + 4变量赋值,但是当你看y = map (+4) [1..](这意味着从1向上为无限列表中的每个数字加4)时,现在是y什么?它是一个无限列表,还是一个返回无限列表的函数(提示:这是第二个.) 在这种情况下,当利用懒惰时,将变量视为函数可能是非常有益的,如果不是绝对必要的话.

实际上,在Haskell中,您的定义y是一个不接受任何参数并返回的函数x+4,其中x也是一个不带参数的函数,但返回值2.


在具有一阶函数的任何语言中,将匿名函数分配给变量是微不足道的,但对于大多数语言,您必须添加括号以指示函数调用.

示例Lua代码:

x = function() return 2 end
y = function() return x() + 4 end
print(y())
x = function() return 5 end
print(y())
Run Code Online (Sandbox Code Playgroud)
$ lua x.lua
6
9

或者在Python中使用相同的东西(坚持使用一阶函数,但我们可以使用普通整数x):

x = lambda: 2

y = lambda: x() + 4

print(y())

x = lambda: 5

print(y())
Run Code Online (Sandbox Code Playgroud)
$ python x.py
6
9