Praticamente per WrappedMonad
. Immagino che stia diventando (e forse già lo era) sostanzialmente obsoleto. Ma il numero WrappedArrow
è più difficile, perché i tipi Arrow
e i tipi Applicative
hanno tipi diversi, * -> * -> *
rispetto a * -> *
. E a causa del modo risoluzione istanza GHC funziona, aggiungendo l'istanza (presumo l'extra Arrow
è stato un errore di battitura)
instance Arrow a => Applicative (a b)
significherebbe che non tipo costruttore con due o più argomenti potrebbe poi dare un Applicative
anche senza dando un Arrow
- che sembra piuttosto drastico.
L'opzione inversa di aggiungere una superclasse Applicative (a b) =>
per Arrow a
sembrerebbe più appetibile - tranne che non si può avere superclassi con un tipo di forall'ed come b
. Tali superclassi sarebbero utili anche per altre cose e sono state suggerite molte volte, quindi presumo sia difficile da implementare bene.
fonte
2015-02-12 02:12:57
È anche il caso che molte persone considerano la classe 'Arrow' non progettata, quindi farne una superclasse dell'importante classe' Applicative' probabilmente non andrà molto bene. – dfeuer
sottoclasse @dfeuer, non superclasse. Non influenzerebbe direttamente 'Applicativo'. Ancora, non è possibile con l'attuale sistema di classe. –
Ah, ho perso il tuo punto, penso. – dfeuer