Есть SF
, который уже определен в любом месте или, по крайней мере, имеет имя?Название продукта `Const` и функтора?
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
, который уже определен в любом месте или, по крайней мере, имеет имя?Название продукта `Const` и функтора?
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)
Ваш функтор выглядит
type SF a f = (,) a :. f
используя functor-combo обозначения.
(я как-то предпочитаю смотреть на это с помощью композиции, а не с использованием продукта и Const
.)
Еще одно основное название вашего ': .' -' Compose' из пакета 'transformer'. –
Вы можете просто определить функтор продуктов
data (f :* g) a = P (f a) (g a) deriving Functor
, а затем написать его непосредственно
type SF a f = Const a :* f
Похоже, вы объявляете функтор, который содержит другой функтор. –
AFAIK там уже не один, но это не значит, что он не существует в углу какого-то случайного пакета, который я никогда не использовал. – bheklilr
@ Code-Apprentice, я определяю трансформатор-функтор. 'SF a f' совпадает с функтором' f', но он несет дополнительное значение типа 'a', прикрепленного к нему. – Artyom