Size: a a a

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

2018 February 24

Oℕ

Oleg ℕizhnik in Теория категорий
а что с ней не так? Бисимуляция для равенства?
источник

Oℕ

Oleg ℕizhnik in Теория категорий
сам факт обмена инпутом-аутпутом через ченнелы и general concurrency?
источник

NI

Nick Ivanych in Теория категорий
Oleg ℕizhnik
сам факт обмена инпутом-аутпутом через ченнелы и general concurrency?
Ну да. Вот эти вот каналы — это некрасиво и излишне.
Нормальной категории не подобрать, всё громоздко получается.
Ну вот для всяких там типизированных лябмд, у нас есть всевозможные CCС.
А для пи-исчисления что у нас есть? ;-)
Ну и если его типизировать, то тем более нифига проще не получается, чем там же линейщина.
А ещё, пи-исчисление записывается внутри линейщины.
И зачем тогда?...
источник

λ

λoλzod in Теория категорий
Подскажите хороший задачник для начинающих по теме
источник

AG

Alex Gryzlov in Теория категорий
в Lawvere, Schanuel, "Conceptual Mathematics" по моему были задачки
источник

λ

λoλzod in Теория категорий
Спасибо, нашёл, выглядит интересно
источник
2018 February 28

OP

Oleg Prutz in Теория категорий
Ребята поясните пожалуйста за f-алгебры и катаморфизмы
источник

к

кана in Теория категорий
источник

OP

Oleg Prutz in Теория категорий
foldl`/`foldr - это катаморфизм для [] - как это понять?
что здесь f?
что здесь Fix f? наверное []
что здесь алгебра? f a -> a
источник

к

кана in Теория категорий
newtype Fix f = Fix
 { unFix :: f (Fix f) }

cata :: Functor f => (f a -> a) -> Fix f -> a
cata f = go where
 go = f . fmap go . unFix

data ListF b = NilF | ConsF a b
 deriving (Functor)

type List a = Fix (ListF a)

lengthAlg :: ListF a Int -> Int
lengthAlg NilF = 0
lengthAlg (ConsF _ l) = l + 1

length :: List a -> Int
length = cata lengthAlg


чет типа такого полагаю
источник

VY

Vasiliy Yorkin in Теория категорий
т.е. грубо говоря, как найти функтор для рекурсивного АДТ:

абстрагироваться по всем рекурсивным типам АДТ
применить комбинатор неподвижной точки на этом АДТ
для списка:
data List a = Nil | Cons a (List a) превращается в
data List t r = Nil | Cons t r


для дерева:
data Tree a = Leaf a | Node (Tree a) (Tree a) -- превращается в
data Tree a t = Leaf a | Node t t


список:
data L t r = Nil | Cons t r
type List t = Fix (L t)

абстрагируемся по t (говорим, что t это рекурсивный тип данных – такой же список)

дерево:
data T a t = Leaf a | Node t t
type Tree a = Fix (T a)

опять тоже самое – абстрагируемся по t (говорим, что t это рекурсивный тип данных, т.е. тоже самое дерево)
источник

OP

Oleg Prutz in Теория категорий
это видел, да
источник

OP

Oleg Prutz in Теория категорий
а что по списку из стандартной библиотеки [] ?
источник

OP

Oleg Prutz in Теория категорий
это fixed point какого-то функтора?
источник

к

кана in Теория категорий
ну вот же для списка я скинул
data ListF b = NilF | ConsF a b
 deriving (Functor)

type List a = Fix (ListF a)

nil :: List a
nil = Fix NilF

cons :: a -> List a -> List a
cons a b = Fix (ConsF a b)
источник

к

кана in Теория категорий
чтобы работать с [] через все это, его нужно в ListF преобразовать
источник

VY

Vasiliy Yorkin in Теория категорий
по сути массив это data [] a = [] | a : [a]
источник

OP

Oleg Prutz in Теория категорий
Vasiliy Yorkin
по сути массив это data [] a = [] | a : [a]
это уже fixed point
источник

OP

Oleg Prutz in Теория категорий
можно ли найти его unFix?
источник

Oℕ

Oleg ℕizhnik in Теория категорий
Oleg Prutz
можно ли найти его unFix?
каждый раз находишь, когда паттерн-матчишь списки
источник