Я читаю статью википедии о катаморфизмах, и на данный момент я смог воспроизвести примеры Haskell в F # за исключением этой части:
type Algebra f a = f a -> a -- the generic f-algebras
newtype Fix f = Iso { invIso :: f (Fix f) } -- gives us the initial algebra for the functor f
cata :: Functor f => Algebra f a -> (Fix f -> a) -- catamorphism from Fix f to a
cata alg = alg . fmap (cata alg) . invIso -- note that invIso and alg map in opposite directions
Можно ли это сделать в F #?