Paramorfism
I formella metoder för datavetenskap är en paramorfism (från grekiska παρά , som betyder "nära varandra") en förlängning av begreppet katamorfism som först introducerades av Lambert Meertens för att behandla en form som "äter upp sitt argument och behåller det också", som exemplifieras av den faktoriella funktionen. Dess kategoriska dubbel är apomorfismen .
Det är en mer bekväm version av katamorfism genom att den ger den kombinerande stegfunktionen omedelbar tillgång inte bara till resultatvärdet rekursivt beräknat från varje rekursivt subobjekt, utan även det ursprungliga subobjektet självt.
Exempel Haskell-implementering, för listor:
cata :: ( a -> b -> b ) -> b -> [ a ] -> b para :: ( a -> ([ a ], b ) -> b ) -> b -> [ a ] - > b ana :: ( b -> ( a , b )) -> b -> [ a ] apo :: ( b -> ( a , Antingen [ a ] b )) -> b -> [ a ] cata f b ( a : as ) = f a ( cata f b as ) cata _ b [ ] = b para f b ( a : as ) = f a ( as , para f b as ) para _ b [] = b ana u b = fall u b av ( a , b' ) -> a : ana u b' apo u b = fall u b av ( a , höger b' ) -> a : apo u b' ( a , vänster som ) - > a : som
Se även
- Morfism
- Morfismer av F-algebras
- Från en initial algebra till en algebra: Katamorfism
- Från en koalgebra till en slutlig koalgebra: Anamorfism
- En anamorfism följt av en katamorfism: Hylomorfism
- Utvidgning av idén om anamorfismer: Apomorfism
externa länkar
Förklaring om StackOverflow: [1] , [2] , [3]
Bloggar: [4]
Samtal: [5]