You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
lives now in /home/daniel/workspace/hsreduce-test-cases/parser-calledarityanalysis
best thing is to probably binary search reduce the string
16979
containers
warum hört das bei 9000kb auf?
irgendwie kann es da nicht die Exports reduzieren?
Mergen: Testfall aus Mark Karpovs Mini Repo erstellen
protocol-buffers
Abhängigkeit “runterladen” vor dem Mergen
pandoc
geht noch nicht zu mergen
15176
I think there was something hard about reproducing that repo?
15753
GHC prints type operator wrong :)
18018
17722
17684
16127
17516
Mergen / hsAllInOne.hs
operators richtig behandeln
[#A] default declarations
[#C] `isOperator`: use operator syntax from Haskell2010 report
Reduction Passes
Function Inlining
ab wann lohnt sich Inlining?
Inlining, selbst wenn shadowings entstehen
Template haskell
[ ] TH: splices dumpen, gedumpte einfügen in HS-Datei und dann weiter reduzieren
On the Project Level
[ ] Module mergen
[ ] Dependencies vendorn: nicht mehr als separate Dependency
[ ] cabal file: dependencies entfernen
Bangtypes: Bang weg
Typen vereinfachen / Typaliase
[ ] unnötige Typaliase weg
[ ] Typ mit 1 Konstruktor: kann gleich Typalias sein, oder?
[ ] Typaliase reduzieren / minimieren
[ ] Typaliase inlinen
[ ] deriving-Clause minimieren
[ ] Produkttypen minimieren
forall
Beta-Reduktion anwenden
polymorphe Funktion: Typen konkretisieren (vllt. von Verwendungen inferieren?)
[ ] Variablen aus forall entfernen
[x] forall weg
Kontexte / Constraints
[ ] Variablen aus Kontext entfernen
[x] Kontexte / Constraints entfernen
Typsignaturen vereinfachen
Unit / ()
[ ] Typparameter durch Unit / () ersetzen + Benutzungen löschen
[x] Typparameter durch Unit / () ersetzen
Parameter
[ ] unbenutzte Parameter zu `_` abändern oder gleich löschen
[ ] -Wunused-params benutzen
`_` kommt anstatt Parameter vor
[ ] Parameter entfernen
[ ] aus Signatur löschen
[ ] aus Matches löschen
[ ] aus Verwendungen löschen
Remove Unused
Decls
[ ] iwie das Filtern von Decls schöner machen, einmal filter und für alle Decls kurz den Check implementieren oder iwie “Inversion of Control” hinkriegen
GADTs
[ ] Typvariablen durch () ersetzen
[x] forall weg
[x] Typkontext / Constraints weg
[x] Datendeklarationen
[x] unbenutzte Konstruktoren löschen
[x] Data Decls ohne Konstruktoren löschen
[x] unbenutzte Function Bindings
Schwierigkeiten: wenn die Signatur nicht mitgelöscht wird, macht es keinen Sinn, nur das FunBind zu löschen
wegen der nicht-funktionierenden Löschung sind dann andere decls noch lebendig
[x] sonstige Decls versuchen zu entfernen
Imports
[ ] Anzahl importierter Funktionen minimieren
sollte mit “-Wunused-imports” nicht so schwer sein, das kann es so fein erkennen
explizites import all
[ ] Konvertieren zu explizitem import all
[ ] alle imports qualified machen
[x] unused imports entfernen
Exports
Handling von impliziten export all
[x] Konvertieren zu explizitem export all
[x] unused exports entfernen
Beobachtung: alle Exports entfernen ist nicht beste Strategie, siehe #14270
Pragmas
die befinden sich bei SigD!
[ ] UNPACK Pragmas
[ ] INLINE Pragmas
[ ] other Pragmas
[x] LANGUAGE Pragmas
Misc
[ ] Datei formattieren
[ ] case-Ausdrücke minimieren
[ ] Matches entfernen und ein `_ -> …` Match einführen