Sto tentando di implementare un'istanza Monad. Come esempio più semplice, assumere i seguenti:Devo implementare Applicative e Functor per implementare una Monad
data Maybee a = Notheeng | Juust a
instance Monad Maybee where
return x = Juust x
Notheeng >>= f = Notheeng
Juust x >>= f = f x
fail _ = Notheeng
Questo dovrebbe essere l'implementazione standard di Forse per quanto ne so. Tuttavia, questo non viene compilato, perché il compilatore si lamenta:
Nessuna istanza per (applicativo Maybee)
e allo stesso modo vuole un'istanza Functor una volta che l'applicativo è dato.
Quindi: domanda semplice: devo sempre implementare Functor e Applicative prima di poter implementare una Monade?
mi aspetto molto di domande su questo, sulla scia della versione di GHC 7.10. Dovremmo creare un tag * Functional-Applicative-Monad proposal *? – Jubobs