Speicherbedarf existenziell quantifizierter Typen und zugehörige Optimierungstechniken

8

Betrachten Sie das folgende Datenmodell, das ein existentielles verwendet:

%Vor%

Die Regeln zum Speicherbedarf von Standardtypen wurden bereits früher erläutert . Wie lauten nun die Regeln für existenzielle Typen wie AnyNode ?

Gibt es Optimierungstechniken, z.B. einige Workarounds mit unsafeCoerce machen es möglich, sich der Existenzerklärung zu entziehen? Ich frage das, weil ein Typ, der Node ähnlich ist, in einer Kostenstelle einer sehr speicherintensiven Bibliothek platziert wird, so dass der Speicherbedarf alle ist, weshalb die schmutzigsten Hacks willkommen sind.

    
Nikita Volkov 26.11.2013, 12:07
quelle

1 Antwort

15

Das Paket ghc-datasize kann hier hilfreich sein:

%Vor%

Es scheint also, dass Node ein zusätzliches Wort im Vergleich zum einfachen unären Datenkonstruktor benötigt, vermutlich wegen des Show -Klassenwörterbuchzeigers. Außerdem habe ich versucht, mehr Klasseneinschränkungen zu Node hinzuzufügen, und jeder von ihnen benötigt ein zusätzliches Leerzeichen.

Ich weiß nicht genau, ob es möglich ist, den Wörterbuchzeiger unter bestimmten Umständen wegzuzaubern. Ich denke, es ist nicht möglich, wenn Sie den existentiellen Typ behalten möchten.

    
András Kovács 26.11.2013, 13:00
quelle

Tags und Links