2014-06-27 18 views
6

Attualmente sto leggendo le basi della teoria delle categorie e cerco di dare un senso ai nomi che Haskell assegna alle operazioni di monade semanticamente.Patrimonio dei nomi degli operatori monad

Tutto il materiale che ho passato si riferisce a return come l'unità mappa e join come la mappa di moltiplicazione (sto bene con il nome "join"). Per >>= o bind non ho ancora (ancora) trovato un nome comune in matematica. Piuttosto mi sono imbattuto nella sua forma capovolta, lift o - *, che a sua volta ha senso per me.

domande effettivi (TLDR):

  1. Perché "ritorno" usato al posto di "unità"?
  2. Perché "bind" è stato coniato come nomenclatura?
  3. Esiste un nome per "legare" nel mondo della matematica?
  4. Quali sono le semantiche che i nomi "bind" e "ritorno" dovrebbero implicare?

risposta

9

Entrambi i nomi derivano dalla programmazione piuttosto che dalla matematica. return, utilizzato come ultima istruzione dell'espressione do, lo rende molto imperativo: do {do_something; return result}. Il nome di bind deriva dalla sua traduzione do: action >>= \x -> something tradotto in do {x <- action; something}, che assomiglia a x è associato al valore restituito da action.

Per quanto riguarda l'analogico in matematica bind, google "Kleisli triple".

+1

BTW, la denominazione di 'return' è spesso considerata un errore, dal momento che in realtà non si comporta in modo molto simile a" return "imperativo in nessuno dei casi più semplici. –