15

(对不起,我很愚蠢,没有受过教育,所以这可能是一个荒谬的问题。)

我刚开始研究 J,他们使用术语“一元”和“二元”来表示(对我而言)似乎是一元和二元运算符。为什么要这样做,它与我听说过的另一个地方(Haskell)有什么关系?我的猜测是它们是不相关的同音异义词,但我不确定。

4

4 回答 4

20

它们是无关的,除了两者都源自希腊语的“一”字根。一元和二元确实是一元和二元函数的术语。具体来说,它们是源自希腊语的等价物——使用-adic而不是-ary。考虑“三合会”这个词,它也是源自希腊语。

在 Haskell 使用的意义上,Monad 的词源不清楚,但可能源自“monoid”。

不过,我鼓励在 Haskell 中坚持使用源自拉丁语的“n-ary”术语。由于柯里化,Haskell 中的所有函数在技术上都有一个参数,因此使用源自希腊语的形式可能会产生任意数量的混淆。

于 2012-01-10T17:24:11.127 回答
14

它们是无关的;CA McCann 指出了两者的词源。

无论如何,Haskell 的使用当然来自范畴论,并且被认为是与monad 的其他意义无关的独立创造。

事实上,“一元”的 J 意义可以追溯到 APL,它比 Haskell 早了四分之一个世纪!我认为它也可能早于该术语的类别理论使用。

于 2012-01-10T17:23:08.853 回答
12

Adicity(或adinity)是arity的替代品,使用希腊数字根而不是拉丁语:

  • niladic/medadic = 无效

  • 一元=一元

  • 二元=二进制

  • 三元=三元

  • 四元 = 四元

  • …</p>

monad在哲学、宗教、生物学、范畴论和函数式编程中的各种含义都是从其对“单元”的字面含义中分离出来的。Haskell 项可能源自monoid,一种等效于加法单子的代数结构。

于 2012-01-10T22:24:50.407 回答
6

不,J 使用与 Haskell 术语无关。一元和二元函数分别是一个和两个参数的函数。

J 术语起源于 APL,它比 Haskell 稍早一些,但我很少看到它们在 APL 家族之外被这样使用。

在非 APL 上下文中使用这些术语的一个示例来自《清洁代码》一书,该书在关于函数的章节中讨论了 niladic、monadic 和二元函数。

于 2012-01-10T17:23:59.400 回答