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

J C*_*per 16 monads haskell terminology j

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

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

C. *_*ann 20

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

从某种意义上说,哈斯克尔使用它的单词有一个不明确的词源,但可能源于"幺半群".

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

  • 嘿,我喜欢"任意数量的混乱"这个短语. (3认同)

ehi*_*ird 14

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

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

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

  • @trinithis:你是否可能将Haskell与其他语言混淆?Lisp是在1958年指定的,APL是在1957年到1964年间开发的,但是Haskell直到1987年才开始,而Haskell 1.0直到1990年才被定义. (6认同)

Jon*_*rdy 12

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

  • niladic/medadic = nullary

  • monadic =一元

  • 二元=二元

  • 三元组=三元组

  • 四联=四元

  • ...

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


sve*_*rre 6

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

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

在非APL环境中使用这些术语的一个例子来自清洁代码一书,该代码在关于函数的章节中讨论了关于niladic,monadic和dyadic函数的内容.

  • 在APL特定文献之外使用的monadic和二元的另一个例子可以在Peter Landin的"The Next 700 Programming Languages"中找到(1966).见第8节和附加的讨论. (2认同)