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关键字.
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
| 归档时间: |
|
| 查看次数: |
436 次 |
| 最近记录: |