在 APL 和 Haskell 中,术语“monad”是两个完全不同的东西,还是从两个不同的角度看到同一个东西。
我对这两种语言都比较新,正在努力理解更高级的概念。
我对这两种语言都比较新,正在努力理解更高级的概念。
完全不同,在Haskell中,单子是任何配备有两个函数的东西
bind :: m a -> (a -> m b) -> m b
return :: a -> m a
关于它们如何一起运作,有一些规则。实际上,这是范畴论中的构造。
在 APL 中,单子是用来描述函数(动词)需要多少参数的术语。似乎“单子”可以用作“一元函数”的同义词,并且是逻辑和语言学中常见的术语。
完全不同的两个东西!Monad通常与“Dyad”和“Triad”连用,分别意味着“一个”,“两个”,“三个”。在APL中,它表示“一个参数”。
Haskell中的Monads则完全不同。它们可能源于“monoid”和“operad”,这两者也完全不同。