Czy SF
jest już zdefiniowany w dowolnym miejscu, czy przynajmniej ma nazwę?Nazwa produktu `Const` i funktora?
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)
Czy SF
jest już zdefiniowany w dowolnym miejscu, czy przynajmniej ma nazwę?Nazwa produktu `Const` i funktora?
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)
Twój funktor wygląda
type SF a f = (,) a :. f
użyciu functor-combo notacji.
(jakoś wolę patrzeć na to za pomocą kompozycji, zamiast produktu i Const
.)
Bardziej ogólna nazwa dla twojego ': .' to' Komponuj' z pakietu 'transformatora'. –
Można po prostu zdefiniować produkty funktor
data (f :* g) a = P (f a) (g a) deriving Functor
a następnie zapisać go bezpośrednio
type SF a f = Const a :* f
Wygląda na to, że deklarujesz funktor, który zawiera inny funktor. –
AFAIK już tam nie ma, ale to nie znaczy, że nie istnieje w rogu jakiegoś losowego pakietu, z którego nigdy nie korzystałem. – bheklilr
@ Code-Apprentice, definiuję transformator funktorowy. 'SF a f' jest tym samym co funktor' f', ale przenosi do niego dodatkową wartość typu "a". – Artyom