This shows you the differences between two versions of the page.
|
pp:26:teme:haskell-graphs [2026/03/19 17:51] mihnea.muraru created |
pp:26:teme:haskell-graphs [2026/03/19 17:56] (current) mihnea.muraru [Etapa 1] |
||
|---|---|---|---|
| Line 63: | Line 63: | ||
| Găsiți detalii despre funcționalitate și implementare, precum și exemple, direct în codul sursă. Veți avea de completat definițiile care încep cu ''%%*** TODO ***%%''. | Găsiți detalii despre funcționalitate și implementare, precum și exemple, direct în codul sursă. Veți avea de completat definițiile care încep cu ''%%*** TODO ***%%''. | ||
| - | Pentru reprezentarea **mulțimilor**, veți folosi tipul predefinit ''%%Set a%%'', similar tipului listă ''%%[a]%%''. Având în vedere că există funcții pe mulțimi cu **același nume** ca cele pe liste (de exemplu, ''%%map%%'', ''%%filter%%''), pentru evitarea conflictului de nume, abordarea standard, adoptată și în temă, este de a importa etichetat modulul necesar (''%%import qualified Data.Set as S%%''), urmând ca toate tipurile și funcțiile din acest modul să fie utilizate cu numele prefixat: ''%%S.Set a%%'', ''%%S.map%%'', ''%%S.filter%%'' etc. | + | Pentru reprezentarea **mulțimilor**, veți folosi tipul predefinit ''%%Set a%%'', similar tipului listă ''%%[a]%%''. Având în vedere că multe dintre funcțiile pe mulțimi au **același nume** cu cele pe liste (''map'', ''filter'', ''foldr'' etc.), conflictele se evită plasând la începutul scheletului liniile: |
| + | |||
| + | <code haskell> | ||
| + | import Data.Set (Set) | ||
| + | import qualified Data.Set as Set | ||
| + | </code> | ||
| + | |||
| + | Semnificația este următoarea: | ||
| + | |||
| + | * Prima linie afirmă că doar constructorul de tip ''Set'' poate fi utilizat ca atare. | ||
| + | * A doua linie afirmă că toate celelalte entități importate din modul trebuie **prefixate** cu ''Set.''. De exemplu, ''Set.map'' denotă funcționala pe mulțimi, în timp ce ''map'' continuă să refere funcționala pe liste standard. | ||
| **ATENȚIE!** Toate funcțiile din această etapă, cu excepția ''%%search%%'', vor fi implementate **FĂRĂ recursivitate explicită**. Nerespectarea acestei cerințe va conduce la o **depunctare de 10p/100 per funcție**. | **ATENȚIE!** Toate funcțiile din această etapă, cu excepția ''%%search%%'', vor fi implementate **FĂRĂ recursivitate explicită**. Nerespectarea acestei cerințe va conduce la o **depunctare de 10p/100 per funcție**. | ||