Haskell的Monad vs. APL的Monad

时间:2014-05-06 03:48:47

标签: haskell monads apl

在APL和Haskell中,monad这个词是指两个完全不同的东西,或者从两个不同的角度来看同样的东西。

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

4 个答案:

答案 0 :(得分:12)

完全不同,在Haskell中,monad具有两个功能

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

关于他们如何一起玩的一些规则。它实际上是一种类别理论的结构。

在APL中,monad只是用于描述函数(动词)所需参数的术语。似乎在" monad"可以用作"一元函数的同义词"并且是逻辑学和语言学中常见的术语。

答案 1 :(得分:6)

两件完全不同的东西! Monad经常与" Dyad"和"三合会"简单地说是一个","中的两个","三个"。在APL的情况下,它表示"一个参数"。

Haskell中的Monads完全不同。他们可能会从" monoid"中获取他们的词源。和" operad"两者也完全不同。

答案 2 :(得分:3)

据我所知,他们是不同的东西。如果APL的monad只是一个有一个参数的动词(因为this page会让我相信;我不知道APL),它与Haskell的monad非常不同,它来自类别理论,并且无关与功能的arity。

答案 3 :(得分:0)

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