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/06 12:39]
mihnea.muraru
pp:24:teme:haskell-imagini-functionale [2024/05/11 22:42] (current)
mihnea.muraru [Notă pentru curioși (facultativ)]
Line 2: Line 2:
  
   * Data publicării:​ 09.04.2024   * Data publicării:​ 09.04.2024
-  * Data ultimei modificări: ​06.05.2024+  * Data ultimei modificări: ​11.05.2024
   * Deadline hard: ziua laboratorului 10   * Deadline hard: ziua laboratorului 10
   * [[https://​curs.upb.ro/​2023/​mod/​forum/​view.php?​id=158012|Forum temă]]   * [[https://​curs.upb.ro/​2023/​mod/​forum/​view.php?​id=158012|Forum temă]]
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 =====
  
Line 243: Line 257:
 ===== Changelog ===== ===== Changelog =====
  
 +  * 11.05 (12:05): Publicat checker etapa 3.
   * 06.05 (11:40): Publicat etapa 3, enunț și schelet; urmează checker-ul.   * 06.05 (11:40): Publicat etapa 3, enunț și schelet; urmează checker-ul.
   * 23.04 (21:20): Publicat etapa 2.   * 23.04 (21:20): Publicat etapa 2.
pp/24/teme/haskell-imagini-functionale.1714988373.txt.gz · Last modified: 2024/05/06 12:39 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