This is an old revision of the document!
Haskell: Graph Zoo
Sugestii de întrebări pentru prezentare:
Etapa 1
care este diferența dintre Set-uri și listele standard?
care sunt avantajele utilizării Set-urilor în loc de liste standard în temă?
ce face funcția fromList pentru Set-uri?
ce funcționale pe Set-uri ai folosit?
ce alte funcții predefinite pe Set-uri ai folosit?
cum ai implementat funcția x?
cum ai gestionat ciclurile la search?
cum ai derivat bfs și dfs din search?
cum se valorifică evaluarea leneșă la countIntermediate?
Etapa 2
cum ai redefinit StandardGraph folosind data (întrebare obligatorie, vedeți spreadsheet)?
exemplu
data StandardGraph a = SG { nodes :: S.Set a, edges :: S.Set (a, a) }
fromComponents ns es = SG (S.fromList ns) (S.fromList es)
cum ai implementat funcția x?
ce tipar comun ai observat la funcțiile removeNode, splitNode, mergeNodes?
cum ai generat partițiile utilizând list comprehensions (dacă au respectat hint-ul)?
care e un avantaj al reprezentării din etapa 2 vs reprezentarea din etapa 1?
Etapa 3
cum ai definit clasa care generalizează conceptul de graf: parametrizată cu tipul concret sau cu constructorul de tip (întrebare obligatorie, vedeți enunț și spreadsheet)? de ce?
care este tipul funcției nodes, presupunând că e definită în interiorul clasei (întrebare obligatorie, vedeți enunț și spreadsheet)?
R:
nodes :: Graph g => g a -> S.Set a
ce face fromInteger din Num?
de ce nu este suficientă instanța implicită de Eq obținută cu deriving?
care a fost cea mai generală funcțională, care a permis implementarea tuturor celorlalte funcții din AlgebraicGraph?
care este diferența dintre extend și fmap?
cum au simplificat mulțimile implementarea lui isModule?
cum au simplificat mulțimile implementarea lui isModularPartition?
cum ai determinat partiția maximală?