Qual è il termine generico per un funtore con una struttura simile funzione promote
di QuickCheck, cioè una funzione della forma:Qual è il caso generale della funzione di promozione di QuickCheck?
promote :: (a -> f b) -> f (a -> b)
(questo è l'inverso del flip $ fmap (flip ($)) :: f (a -> b) -> (a -> f b)
). Esistono persino dei funtori con questa operazione, ad eccezione di (->) r
e Id
? (Sono sicuro che ci deve essere). Googling 'quickcheck promote' ha solo alzato la documentazione QuickCheck, che non fornisce promote
in un contesto più generale AFAICS; cercare SO per 'quickcheck promote' non produce risultati.
È ['sequenceA'] (http://hackage.haskell.org/package/base-4.7.0.1/docs/Data-Traversable.html#v:sequenceA) rilevante? –
Fammi vedere. Sostituendo il tipo di 'sequenzaA', otterremmo' t = (->) a' e 'f = f'. Quindi se '(->) a' aveva un'istanza 'Traversable', questa funzione esisterebbe per tutti' a'. Penso che 'Traversable ((->) a)' richieda '(Bounded a, Enum a)' o l'equivalente, comunque. –
Per quello che vale, la famiglia di pacchetti [universo] (http://hackage.haskell.org/package/universe) fornisce [l'istanza necessaria di 'Traversable'] (http://hackage.haskell.org/package/universe -Inversa-casi-1.0/docs/src/Data-universo istanze-Traversable.html). –