È SF
già definito ovunque, o almeno ha un nome?Un nome per un prodotto di `Const` e un functor?
data SF a f x = SF a (f x)
instance Functor f => Functor (SF a f) where
fmap g (SF a fx) = SF a (fmap g fx)
È SF
già definito ovunque, o almeno ha un nome?Un nome per un prodotto di `Const` e un functor?
data SF a f x = SF a (f x)
instance Functor f => Functor (SF a f) where
fmap g (SF a fx) = SF a (fmap g fx)
tuo functor sembra
type SF a f = (,) a :. f
usando la notazione functor-combo.
(in qualche modo preferisco guardare utilizzando la composizione, invece di usare il prodotto e Const
.)
Un nome più mainstream per il tuo ': .' è' Componi' dal pacchetto 'transformer'. –
Si può solo definire prodotti functor
data (f :* g) a = P (f a) (g a) deriving Functor
e poi scrivere direttamente
type SF a f = Const a :* f
Sembra che tu stia dichiarando un funtore che contiene un altro funtore. –
AFAIK non ce n'è uno già fuori, ma questo non significa che non esista nell'angolo di un pacchetto casuale che non ho mai usato. – bheklilr
@ Code-Apprentice, sto definendo un trasformatore functor. 'SF a f' è lo stesso di functor' f', ma ha un valore addizionale di tipo 'a' collegato ad esso. – Artyom