在APL和Haskell中,monad这个词是指两个完全不同的东西,或者从两个不同的角度来看同样的东西。
我对这两种语言都很陌生,并试图理解更高层次的概念。
答案 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”完全相似。