2014-05-06 17 views
9

In APL e Haskell, il termine monade significa due cose completamente diverse, o la stessa cosa vista da due prospettive diverse.Monade di Haskell contro Monade di APL

Sono piuttosto nuovo in entrambe le lingue e sto cercando di dare un senso ai concetti di livello superiore.

risposta

12

Totalmente diverso, in Haskell una monade è tutt'altro dotato di due funzioni

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

E alcune regole su come giocano insieme. In realtà è una costruzione dalla teoria delle categorie.

In APL una monade è solo un termine per descrivere quanti argomenti una funzione (verbo) assume. Sembra che in "monade" possa essere usato come sinonimo di "funzione unaria" ed è un termine che si trova comunemente nella logica e nella linguistica.

3

Da quello che posso dire, sono cose diverse. Se la monade di APL è solo un verbo con un singolo argomento (come this page vorrei farmi credere, non conosco APL), è molto diversa dalla monade di Haskell, che proviene dalla teoria delle categorie, e non ha nulla a che fare con l'arità di funzioni.

6

Due cose completamente diverse! Monad va spesso in serie con "Dyad" e "Triade" che significa semplicemente "di uno", "di due", "di tre". Nel caso dell'APL indica "di un argomento".

Le Monade di Haskell sono completamente diverse. Probabilmente prendono la loro etimologia da "monoid" e "operad" che sono entrambi completamente diversi.

+3

etimologia di monade: http://english.stackexchange.com/questions/30654/where-does-the-term-monad-come-from – luqui

0

I programmatori APL e la documentazione APL utilizzano raramente il termine "monade". Invece faranno riferimento a una "funzione monadica" (una funzione che accetta solo un singolo argomento) o "una funzione chiamata monadicamente" (una che omette un argomento facoltativo). Nessuno di questi è affatto simile all'utilizzo di Haskell del termine "Monade".