This shows you the differences between two versions of the page.
pp:24:teme:haskell-imagini-functionale [2024/05/11 20:23] mihnea.muraru [Etapa 3] |
pp:24:teme:haskell-imagini-functionale [2024/05/11 22:42] (current) mihnea.muraru [Notă pentru curioși (facultativ)] |
||
---|---|---|---|
Line 235: | Line 235: | ||
type TransformationAST = Fix TransformationShape | type TransformationAST = Fix TransformationShape | ||
- | type RegionAST = Fix RegionAST | + | type RegionAST = Fix RegionShape |
</code> | </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 ''foldRegionAST'' și ''foldTransformationAST'' devin cazuri particulare. **//Combiner//-ul** are acum tipul mai general ''Functor f => f a -> a'' și poartă numele de **algebră asociată functorului** ''f''. | + | Î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 ===== | ||