Streaming Representation−Changers

<em>Unfolds</em> generate data structures, and <em>folds</em> consume them. A <em>hylomorphism</em> is a fold after an unfold, generating then consuming a <em>virtual data structure</em>. A <em>metamorphism</em> is the opposite composition,...

Full description

Bibliographic Details
Main Author: Gibbons, J
Format: Conference item
Published: 2004
Description
Summary:<em>Unfolds</em> generate data structures, and <em>folds</em> consume them. A <em>hylomorphism</em> is a fold after an unfold, generating then consuming a <em>virtual data structure</em>. A <em>metamorphism</em> is the opposite composition, an unfold after a fold; typically, it will convert from one data representation to another. In general, metamorphisms are less interesting than hylomorphisms: there is no automatic <em>fusion</em> to <em>deforest</em> the intermediate virtual data structure. However, under certain conditions fusion is possible: some of the work of the unfold can be done before all of the work of the fold is complete. This permits <em>streaming metamorphisms</em>, and among other things allows conversion of <em>infinite data representations</em>. We present the theory of metamorphisms and outline some examples.