VY
foldl`/`foldr
- это катаморфизм для []
- как это понять?что здесь
f
?что здесь
Fix f
? наверное []
что здесь алгебра?
f a -> a
[]
что здесь Fix f?
newtype Fix f = Fix (f (Fix f))
я думаю справедливо, что можно представлять себе это как:
data []' a = []'' | a : ([]' a)
type [] a = Fix ([]' a)
шртихи делают все не понятным :(
т.е. аналогично
List
:data L t r = Nil | Cons t r
type List t = Fix (L t)
что здесь алгебра? f a -> a
type Algebra f a = f a -> a
грубо говоря[a] -> a
~ можно представлять себе в терминах
f a
этот сахар в виде:([] a) -> a