函数式编程是否使用变量?
如果不是,功能程序如何占用内存?
答案 0 :(得分:2)
功能程序和命令式(C#,Java)程序都使用变量,但它们对它们的定义不同。
在功能程序中,变量就像数学中的变量一样,一旦赋值,值就无法改变。
在命令式语言中,通常会更改变量所包含的值。
在这两种情况下,变量都使用记忆。
答案 1 :(得分:1)
如果您询问各种编译功能程序方法的实现细节,您可能需要先阅读"Implementing functional languages: a tutorial"。它有点过时(例如,它不包括现代STG方法),但仍然很有价值。另一个甚至更旧的文本是 Field, Harrison, "Functional programming"(更不用说标题,它主要是关于实现FP编译器)。
答案 2 :(得分:0)
纯函数式编程不使用变量,但可能是C语义中的常量(即,仅分配一次,但在运行时)。
函数程序使用函数调用" stack"占用内存,即当前表达式和递归调用函数的参数。
答案 3 :(得分:0)
函数式编程是否使用变量?
好吧,至少你可以将名字绑定到值。可以将此名称称为变量,即使它不是变量。但在数学方面,当我们看到:
x + 3 = 5
我们称x为变量,但它只是另一个名字。
Otoh,绑定到函数参数的名称确实是可变的,如果只是跨函数的不同调用。
如果不是,功能程序如何占用内存?
将有语言元素来构造非原始值,如列表,元组等。这样的数据构造函数从旧的值创建新值(在内存中的某处,但这些细节与FP无关)。