>А Functor тут это функтор из ТК? Типа того. В ТК функтор T ставит в соответствие каждой стрелке f : c -> c' стрелку T f : T c -> T c'. В Хаскелле это делает
fmap :: (c -> c') -> (f c -> f c')
который имеется для функтора f. Ну и аксиомы для функторов ТК выполняются
fmap id = id
fmap (f . g) = fmap f . fmap g
>fmap это fix для типов получается или я что-то путаю? Не, fix для функторов - это Rec
data Rec f = In (f (Rec f))
Подсовывая сюда (вместо f) нерекурсивные инстансы функтора, получаем рекурсивные типы.
>...катаморфизм делает из рекурсивного типа нерекурсивный, а анаморфизм наоборот? Да, катаморфизм обобщает паттерн рекурсии fold, а анаморфизм unfold.
no subject
Date: 2008-01-16 08:26 pm (UTC)Типа того.
В ТК функтор T ставит в соответствие каждой стрелке f : c -> c' стрелку T f : T c -> T c'. В Хаскелле это делает
который имеется для функтора f.
Ну и аксиомы для функторов ТК выполняются
>fmap это fix для типов получается или я что-то путаю?
Не, fix для функторов - это Rec
Подсовывая сюда (вместо f) нерекурсивные инстансы функтора, получаем рекурсивные типы.
>...катаморфизм делает из рекурсивного типа нерекурсивный, а анаморфизм наоборот?
Да, катаморфизм обобщает паттерн рекурсии fold, а анаморфизм unfold.