2013-09-24 31 views
5

Sto cercando l'unità funtore/monadeQuale pacchetto Haskell ha un'unità functor/monad?

data Unit a = Unit 

Potrei facilmente ricrearlo, ma preferisco non duplicare qualcosa di questa base. Viveva in Control.Functor nel pacchetto di categoria extra (http://hackage.haskell.org/packages/archive/category-extras/0.1/doc/html/Control-Functor.html). Non riesco a trovare con Hoogle, o nella mappa del luogo in cui i pezzi di categoria-extras andò a vivere (http://hackage.haskell.org/package/category-extras-1.0.2)

Sembra che dovrebbe vivere nel pacchetto trasformatori, in quanto è lì che Control.Monad.Identity andato (è ora Data.Functor.Identity).

Il codice della libreria più vicina esistente posso venire in mente è

type Unit a = Constant() a 

utilizzando Data.Functor.Constant dal pacchetto trasformatori.

risposta

8

Il tipo Proxy può essere quello che stai cercando.

+1

Eccellente, questo è esattamente quello che sto cercando; Grazie mille. Non mi è venuto in mente che "data Unit a = Unit" è la stessa cosa che scrivo per i proxy, "data Proxy a = a'. Sarebbe fantastico se Hoogle cercasse le dichiarazioni di 'data' nello stesso modo in cui cerca le firme delle funzioni. – Cirdec

+1

Ovviamente intendevo digitare 'data proxy a = Proxy'. – Cirdec