【问题标题】:What is the 2nd class value in terms of functional programming?就函数式编程而言,第二类价值是什么?
【发布时间】:2016-03-14 09:56:25
【问题描述】:

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

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

但是我找不到任何关于 2nd class value 或 3rd、4th、5th 的定义.. 我相信如果第一个存在,那么就必须存在第二个和第三个......

什么是二等值?

我能找到这些价值观的一些例子吗?

(如果没有二等舱价值,那么商务舱价值呢?)

一般来说,一等舱的乘客优先考虑。

1st class 的值是否具有更高的优先级?如果是编译器或运行时?

非常感谢您。

【问题讨论】:

  • 第二类值是所有其他值。第一类值的意思是“物化”、“完全可用”、“内省”,就像运行时任何死的简单值一样。
  • 顺便说一句,这不仅适用于函数式编程。例如,在典型的脚本语言中,例如 python,几乎所有东西都是第一类值:函数、类、模块或在某种程度上每个实际的字节码指令
  • 非常感谢我明白了..

标签: functional-programming


【解决方案1】:

也许你太挑剔了。

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

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

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

顺便说一句,在许多语言中,甚至是函数式语言中,调用堆栈不是一等值(您通常无法检查它,例如询问调用者的调用者)。即使是具体化延续的方案(使用call/cc)也无法检查调用堆栈(但一些实现将其作为扩展提供)。并且检查 closure 中的封闭值通常是不可能的......

“First class”应该被非正式地理解为一个单一的形容词(在这个意义上没有“classes”的“cardinal set”)

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

【讨论】:

  • 你的解释对我来说是可以理解的。谢谢你。但我认为命名非常混乱。我认为“完整”价值或“良好”价值会更容易..
  • @Journeyer 将“头等舱”视为“不是二等舱”。没有别的了。
  • @Journeyer:我不是 母语 说英语的人,所以他们是我不懂的英语微妙之处。
  • @JoSo 好的。我知道了。所以有“第一”和“不是第一”。谢谢..我真的很想建议把这个词改得更简单一些..如果可以的话..
  • 说“头等舱”是十年(至少)的习惯,因此您将无法更改术语。你需要适应现有的做法!
猜你喜欢
  • 2019-04-01
  • 1970-01-01
  • 2018-10-30
  • 2011-04-02
  • 2011-09-29
  • 2010-12-09
  • 1970-01-01
  • 2019-06-04
  • 1970-01-01
相关资源
最近更新 更多