Isomorphisms, hylomorphisms and hereditarily finite data types in Haskell

Paul Tarau
2009 Proceedings of the 2009 ACM symposium on Applied Computing - SAC '09  
Outline an exploration in a functional programming framework of isomorphisms between elementary data types ranking/unranking operations (bijective Gödel numberings) pairing/unpairing operations generating new isomorphisms through hylomorphisms (folding/unfolding into hereditarily finite universes) applications Isomorphisms, Hylomorphisms and Hereditarily Finite Data Types in Haskell tsize = rank (λx→1 + (sum x)) Paul Tarau University of North Texas Isomorphisms, Hylomorphisms and Hereditarily
more » ... nite Data Types in Haskell Extending isomorphisms with hylomorphisms We can now combine an anamorphism+catamorphism pair into an isomorphism hylo defined with rank and unrank on the corresponding hereditarily finite data types: hylo :: Iso b [b] → Iso T b hylo (Iso f g) = Iso (rank g) (unrank f) hylos :: Iso b [b] → Iso Ts [b] hylos (Iso f g) = Iso (ranks g) (unranks f)
doi:10.1145/1529282.1529706 dblp:conf/sac/Tarau09 fatcat:7som2v25wjaszbjd3p3ft5ahxu