Een anamorfisme is een concept uit het functioneel programmeren dat gegrond is in de categorietheorie. De term komt van het Grieks (naar boven) + morfisme (van het Griekse , of vorm).

In functioneel programmeren is een anamorfisme een functie die een reeks genereert door herhaalde toepassing van de functie op het vorige resultaat. Dit begint met een waarde A, waarop een functie f wordt toegepast om B te krijgen. Dan wordt f toegepast op B om C te krijgen, enzovoort tot een eindvoorwaarde is bereikt. Het anamorfisme is de functie die de lijst van A, B, C, enz. genereert.

Het anamorfisme kan ook worden beschouwd als het ontvouwen (unfolding) van de beginwaarde in een reeks.

Anamorfismen in het functioneel programmeren In functioneel programmeren is een anamorfisme een veralgemening van de lijst-producerende unfolds, die in het functioneel programmeren bekendstaan als abstract datatypen, die kunnen worden beschreven als finale coalgebra's. Unfolds zijn de corecursieve analoga van recursieve folds.

Een van de eerste publicaties die de notie van een anamorfisme in de context van programmeren hebben geïntroduceerd was het artikel Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire, door Erik Meijer et al.. Dit was in de context van de programmeertaal Squiggol.

Anamorfismen in categorietheorie In de categorietheorie zijn anamorfismen de duale categorieën van catamorfismen.

Notatie Een notatie voor ana f die in de literatuur gevonden wordt is . De gebruikte haken staan bekend als lenshaken, naar aanleiding waarvan soms aan anamorfismen als lenzen wordt gerefereerd.

Geschiedenis

Een van de eerste publicaties waarin het begrip anamorfisme in de context van programmeren werd geïntroduceerd, was het artikel Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire door Erik Meijer et al.. Dit was in de context van de programmeertaal Squiggol.

Zie ook Catamorfisme Hylomorfisme Paramorfisme Apomorfisme

Externe links Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional Programming with Bananas, Lenses, Envelopes, and Barbed Wire, (Functioneel programmeren met bananen, lenzen, enveloppen en prikkeldraad) , bevat aanvullende definities en voorbeelden

Categorie:Categorietheorie Categorie:Functioneel programmeren