2014-11-27 4 views
7

Mi chiedo se c'è un termine sintetico per qualcosa che è sia una monade che una comonade. Ho fatto qualche ricerca, e so these structures exist, ma non ho trovato un nome per loro.Esiste un termine per una monade che è anche una comonad?

+1

Qualcosa che sia una X e una co-X è spesso chiamata "bi-X", quindi forse "bimonad"? Non so se le persone effettivamente usano la parola "bimonad", però. – kini

+1

@KeshavKini: la nozione di bimonad sarebbe incompatibile con [bifunctors] (http://hackage.haskell.org/package/bifunctors/docs/Data-Bifunctor.html#t:Bifunctor). – leftaroundabout

+1

... stai chiedendo il nome del concetto di teoria della categoria? In questo caso la tua domanda è decisamente fuori tema e dovrebbe essere richiesta su Computer Science.SE. Se stai chiedendo se esistono classi di tipi per una cosa del genere che * lo dichiari *, in modo che la tua domanda diventi più legata alla programmazione, anche se dubito ancora che possa essere considerata in argomento poiché sarebbe fondamentalmente una ricerca di risorse esterne. – Bakuriu

risposta

0

Per quanto ne so, non esiste un termine per definirlo perché una monade-comonad non importerà nulla: si può sempre fare un return per entrare o un extract per uscire.

Come tipi ci sono per imporre alcuni vincoli, un vincolo troppo permissivo non sarebbe di alcuna utilità. Dato che nessuno lo userebbe (tranne che per l'identità), probabilmente nessuno si è preso la briga di nominarlo.

+0

Non vedo il tuo argomento. Sembra che tu stia dicendo che non ci sono monadi interessanti che siano anche comonad. Bene, è sbagliato, [la domanda collegata] (http://stackoverflow.com/questions/16551734/can-a-monad-be-a-comonad) discute tali funtori; [liste non vuote] (http://hackage.haskell.org/package/semigroups-0.16.1/docs/Data-List-NonEmpty.html) sono l'ovvio esempio. Ad ogni modo, 'return' e' extract' non devono avere relazioni particolari, nessuno dei due conosce l'altro. Suppongo di estrarre. return' sarà necessariamente sempre 'id', ma' return. estratto non è affatto banale. – leftaroundabout

+0

Non ci ho pensato, potresti mostrare un minimo esempio di ritorno di non identità. estratto'? Non sto bene con haskell e non riesco a raggiungerlo attraverso questa discussione interessante. (Sto facendo questa wiki wiki in modo che possa essere facilmente modificata (beh, sono ancora nuovo alla politica SO quindi non sono sicuro che sia il modo per farlo)) – PatJ

+1

'return. estrae $ nonEmpty [1,2,3] 'yields' nonEmpty [1] '. – leftaroundabout

1

Tale creatura, a determinate condizioni, è talvolta chiamata "Hopf Monad" o "Bimonad" (http://ncatlab.org/nlab/show/Hopf+monad).

Tuttavia, ciò richiede anche il rispetto di un certo numero di assiomi relativi alle proprietà distributive e non l'ho visto emergere in un contesto di programmazione in alcun modo particolare.