功能编程与变量和内存

时间:2011-09-27 06:44:32

标签: variables functional-programming

函数式编程是否使用变量?

如果不是,功能程序如何占用内存?

4 个答案:

答案 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无关)。