Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pp:24:teme:haskell-imagini-functionale [2024/05/11 12:05]
mihnea.muraru [Changelog]
pp:24:teme:haskell-imagini-functionale [2024/05/11 22:42] (current)
mihnea.muraru [Notă pentru curioși (facultativ)]
Line 225: Line 225:
 Este suficient ca arhiva pentru **vmchecker** să conțină modulele ''​Folds''​ și ''​Shallow''​. Este suficient ca arhiva pentru **vmchecker** să conțină modulele ''​Folds''​ și ''​Shallow''​.
  
 +==== Notă pentru curioși (facultativ) ====
 +
 +Secțiunea prezintă niște informații suplimentare despre etapa 3, și nu afectează rezolvarea temei.
 +
 +Mecanismul de reducere din schelet poate fi generalizat în felul următor. În primul rând, ideea de definire a unui AST (precum ''​RegionAST''​) ca **punct fix al unui ''​Functor''​** (precum ''​RegionShape''​),​ poate fi surprinsă explicit:
 +
 +<code haskell>
 +newtype Fix f = C (f (Fix f))
 +
 +type TransformationAST = Fix TransformationShape
 +type RegionAST ​        = Fix RegionShape
 +</​code>​
 +
 +În acest fel, poate fi definită o **unică funcțională** ''​foldAST'',​ cu tipul mai general ''​Functor f => (f a -> a) -> Fix f -> a'',​ pentru care funcționalele ''​foldTransformationAST''​ și ''​foldRegionAST''​ devin cazuri particulare. Constrângerea ''​Functor f''​ este necesară pentru utilizarea lui ''​fmap''​ în implementare,​ ca în cerința temei, care știe să propage idiosincratic reducerea la substructuri. **//​Combiner//​-ul** are acum tipul mai general ''​f a -> a''​ și poartă numele de **algebră asociată functorului** ''​f''​.
 ===== Precizări ===== ===== Precizări =====
  
pp/24/teme/haskell-imagini-functionale.1715418359.txt.gz · Last modified: 2024/05/11 12:05 by mihnea.muraru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0