10

在 APL 和 Haskell 中,术语 monad 是指两个完全不同的事物,还是从两个不同的角度看待同一事物。

我对这两种语言都很陌生,并试图理解更高层次的概念。

4

4 回答 4

12

完全不同,在 Haskell 中,monad 是任何配备两个功能的东西

bind :: m a -> (a -> m b) -> m b
return :: a -> m a

还有一些关于他们如何一起玩的规则。它实际上是范畴论的构造。

在 APL 中,monad 只是描述函数(动词)需要多少参数的术语。看来,“monad”可以用作“一元函数”的同义词,是逻辑和语言学中常见的术语。

于 2014-05-06T03:55:18.417 回答
6

两种完全不同的东西!Monad 经常与“Dyad”和“Triad”串联,意思是“一”、“二”、“三”。在 APL 的情况下,它表示“一个参数”。

Haskell 中的 Monad 完全不同。他们可能从“monoid”和“operad”中获取词源,这两者也完全不同。

于 2014-05-06T03:55:24.647 回答
3

据我所知,它们是不同的东西。如果 APL 的 monad 只是一个只有一个参数的动词(就像这个页面让我相信的那样;我不知道 APL),它与 Haskell 的 monad 非常不同,它来自范畴论,与 arity 无关的功能。

于 2014-05-06T03:53:57.283 回答
0

APL 程序员和 APL 文档很少使用术语“monad”。相反,它们将引用“monadic 函数”(一个只接受单个参数的函数)或“一个名为 monadicly 的函数”(一个省略可选参数的函数)。这些都与 Haskell 对“Monad”一词的使用完全不同。

于 2016-10-11T04:15:33.637 回答