J中的术语“monadic”是否与Haskell的使用有关?

时间:2012-01-10 17:19:52

标签: haskell terminology monads j

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

我刚开始看J,他们使用术语“monadic”和“dyadic”来表示(对我来说)是一元和二元运算符。为什么要这样做,它与我听到的那个地方(Haskell)有什么关系呢?我的猜测是他们是无关的同音异义词,但我不确定。

4 个答案:

答案 0 :(得分:19)

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

Monad在某种意义上说Haskell使用它an unclear etymology但可能来自“monoid”。

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

答案 1 :(得分:13)

他们是无关的; C. A. McCann指出了两者的词源。

无论如何,Haskell的使用当然来自类别理论,被认为是与other senses of monad无关的独立创造。

事实上,J“monadic”的感觉可以追溯到APL,它在Haskell之前的四分之一世纪!我认为它也可能早于该术语的范畴理论用法。

答案 2 :(得分:11)

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

  • niladic / medadic = nullary

  • monadic =一元

  • dyadic = binary

  • triadic = ternary

  • tetradic = quaternary

  • ...

monad 在哲学,宗教,生物学,范畴论和函数式编程中的各种含义都是从“单位”的字面表示中分别得出的。 Haskell项可能来源于 monoid ,这是一个等价于加法monad的代数结构。

答案 3 :(得分:6)

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

J术语源自APL,它比Haskell稍早,但我很少看到它们在APL家族之外使用过。

在非APL上下文中使用这些术语的一个例子来自书Clean Code,该书在关于函数的章节中讨论了niladic,monadic和dyadic函数。