(对不起,我很愚蠢,没有受过教育,所以这可能是一个荒谬的问题。)
我刚开始研究 J,他们使用术语“一元”和“二元”来表示(对我而言)似乎是一元和二元运算符。为什么要这样做,它与我听说过的另一个地方(Haskell)有什么关系?我的猜测是它们是不相关的同音异义词,但我不确定。
(对不起,我很愚蠢,没有受过教育,所以这可能是一个荒谬的问题。)
我刚开始研究 J,他们使用术语“一元”和“二元”来表示(对我而言)似乎是一元和二元运算符。为什么要这样做,它与我听说过的另一个地方(Haskell)有什么关系?我的猜测是它们是不相关的同音异义词,但我不确定。
它们是无关的,除了两者都源自希腊语的“一”字根。一元和二元确实是一元和二元函数的术语。具体来说,它们是源自希腊语的等价物——使用-adic而不是-ary。考虑“三合会”这个词,它也是源自希腊语。
在 Haskell 使用的意义上,Monad 的词源不清楚,但可能源自“monoid”。
不过,我鼓励在 Haskell 中坚持使用源自拉丁语的“n-ary”术语。由于柯里化,Haskell 中的所有函数在技术上都有一个参数,因此使用源自希腊语的形式可能会产生任意数量的混淆。
它们是无关的;CA McCann 指出了两者的词源。
无论如何,Haskell 的使用当然来自范畴论,并且被认为是与monad 的其他意义无关的独立创造。
事实上,“一元”的 J 意义可以追溯到 APL,它比 Haskell 早了四分之一个世纪!我认为它也可能早于该术语的类别理论使用。
不,J 使用与 Haskell 术语无关。一元和二元函数分别是一个和两个参数的函数。
J 术语起源于 APL,它比 Haskell 稍早一些,但我很少看到它们在 APL 家族之外被这样使用。
在非 APL 上下文中使用这些术语的一个示例来自《清洁代码》一书,该书在关于函数的章节中讨论了 niladic、monadic 和二元函数。