Size: a a a

Теория категорий

2019 July 02

ЗП

Зигохистоморфный Препроморфизм in Теория категорий
тогда это явное соответствие с <*> будет
источник

Oℕ

Oleg ℕizhnik in Теория категорий
я попытался представить, что если бы у нас был конструктор
Splice: (f Free f a, Day f f a -> Free f b) -> Free f b
источник

Oℕ

Oleg ℕizhnik in Теория категорий
этим я пытаюсь создать то самое свободное представление  Compose f f ~> Day f f
источник

Oℕ

Oleg ℕizhnik in Теория категорий
Которое типа минималистичное дополнение монады до аппликатива
источник

Oℕ

Oleg ℕizhnik in Теория категорий
Если честно, не вполне понимаю ,что я там в коде сделал.
Писал, чтобы типы сошлись
источник

ЗП

Зигохистоморфный Препроморфизм in Теория категорий
а не достаточно доказать что, Compose f f ~> Day f f?
источник

Oℕ

Oleg ℕizhnik in Теория категорий
Зигохистоморфный Препроморфизм
а не достаточно доказать что, Compose f f ~> Day f f?
можешь кодом написать, что ты предлагаешь?
источник

ЗП

Зигохистоморфный Препроморфизм in Теория категорий
только мне кажется наоборот должно быть
источник

ЗП

Зигохистоморфный Препроморфизм in Теория категорий
Day f g ~> Comp f g
источник

NI

Nick Ivanych in Теория категорий
Зигохистоморфный Препроморфизм
только мне кажется наоборот должно быть
+1
источник

Oℕ

Oleg ℕizhnik in Теория категорий
Ну так я же добавляю конструктор такой формы
источник

Oℕ

Oleg ℕizhnik in Теория категорий
Я предполагаю, что образующий функтор умеет собирать Day , мне нужно, воспользовавшись этим придумать "свободную форму" mu, которая будет выражать композицию через свёртку
источник

ЗП

Зигохистоморфный Препроморфизм in Теория категорий
data Y p f a where
 Y :: p b a -> f b -> Y p f a

type Day2 f g a = Y (Cayley g (->)) f a
type CoyonedaBind2 f g a = Y (Star g) f a

fromCoyonedaBind2ToCompose :: forall f g. Functor f => CoyonedaBind2 f g ~> Compose f g
fromCoyonedaBind2ToCompose (Y (Star bfa) gb) = Compose (fmap bfa gb)

fromComposeToCoyonedaBind2 :: forall f g. Compose f g ~> CoyonedaBind2 f g
fromComposeToCoyonedaBind2 (Compose fga) = Y (Star id) fga

fromCoyonedaDayToCoyonedaBind2 :: forall f g. Functor g => Day2 f g ~> CoyonedaBind2 f g
fromCoyonedaDayToCoyonedaBind2 (Y (Cayley pba) gb) = Y (Star (\b -> fmap ($ b) pba)) gb
источник

Oℕ

Oleg ℕizhnik in Теория категорий
Зигохистоморфный Препроморфизм
data Y p f a where
 Y :: p b a -> f b -> Y p f a

type Day2 f g a = Y (Cayley g (->)) f a
type CoyonedaBind2 f g a = Y (Star g) f a

fromCoyonedaBind2ToCompose :: forall f g. Functor f => CoyonedaBind2 f g ~> Compose f g
fromCoyonedaBind2ToCompose (Y (Star bfa) gb) = Compose (fmap bfa gb)

fromComposeToCoyonedaBind2 :: forall f g. Compose f g ~> CoyonedaBind2 f g
fromComposeToCoyonedaBind2 (Compose fga) = Y (Star id) fga

fromCoyonedaDayToCoyonedaBind2 :: forall f g. Functor g => Day2 f g ~> CoyonedaBind2 f g
fromCoyonedaDayToCoyonedaBind2 (Y (Cayley pba) gb) = Y (Star (\b -> fmap ($ b) pba)) gb
это даёт решение задачи?
источник

ЗП

Зигохистоморфный Препроморфизм in Теория категорий
я про то, что Day f g ~> Compose f g
источник

ЗП

Зигохистоморфный Препроморфизм in Теория категорий
но не наоборот
источник

Oℕ

Oleg ℕizhnik in Теория категорий
я думаю, всем понятно ,что зная, что f g - функторы, можно построить Day f g ~> Compose f g
источник

Oℕ

Oleg ℕizhnik in Теория категорий
вопрос, как построить тип данных Foo, дающий следующие три определения
foo :: f ~> Foo f

instance Applicative f => Monad (Foo f)

fooFoldMap :: (Monad g, Applicative f) => (forall a. f a -> g a) -> Foo f b -> g b

в начальной форме, а не что-то вроде

newtype FreeMon' f a =
 FreeMon'
   (forall g. (Monad g, Applicative f) =>
                (forall b. f b -> g b) -> g a)
источник

Oℕ

Oleg ℕizhnik in Теория категорий
я полагаю, что мои построения с большой вероятностью ошибочны, мне интересно где
источник

ЗП

Зигохистоморфный Препроморфизм in Теория категорий
Oleg ℕizhnik
вопрос, как построить тип данных Foo, дающий следующие три определения
foo :: f ~> Foo f

instance Applicative f => Monad (Foo f)

fooFoldMap :: (Monad g, Applicative f) => (forall a. f a -> g a) -> Foo f b -> g b

в начальной форме, а не что-то вроде

newtype FreeMon' f a =
 FreeMon'
   (forall g. (Monad g, Applicative f) =>
                (forall b. f b -> g b) -> g a)
тоесть final encoding тебе не подходит?
источник