在函数式编程方面,第二类值是多少?

时间:2015-12-09 07:58:27

标签: functional-programming

在函数式编程中, 第一类值如下所示:

  • 可以分配给变量的值。
  • 可以作为参数传递给函数的值。
  • 可以从函数返回的值。

但是我找不到关于第二类价值或第3,第4,第5的任何定义。 我相信如果第一个存在,那么必须存在第二和第三......

什么是第二类值?

我可以找到这些值的一些例子吗?

(如果没有第二类值,那么业务类值呢?)

一般来说,头等舱乘客的待遇优先级较高。

是否更高优先级处理第一类值?如果是这样的编译器或运行时?

非常感谢你。

1 个答案:

答案 0 :(得分:5)

也许你太挑剔了。

第一类值是那些具有值的所有属性的值(因此函数是第一类,因为你可以在函数上执行与在整数上相同的事情:将它们作为参数传递,将它们存储在字段中等等)

某些语言有一些非一流的功能。例如,在Ocaml3(但不是今天的Ocaml4)模块中存在但不能用作值(您无法将模块作为参数传递)。那时,模块不是一流的价值(你可以非正式地说模块是第二类的!)

我从来没有听说过三等等......

BTW,在许多语言中,甚至是功能语言,调用堆栈是第一类值(你经常无法检查它,例如要求调用者的调用者)。甚至连续化(使用call/cc)的Scheme也不能检查调用堆栈(但有些实现将此作为扩展)。检查closure内的封闭值通常是不可能的......

“头等”应该作为一个单独的形容词非正式地阅读(在这个意义上没有“类”的“基数集”)

注意:我不是以英语为母语的人,所以我无法理解所有英语语言的细微之处