reallyUnsafePtrEquality # für Konstruktoren ohne Felder

8

Es ist mein Verständnis, dass die Konstruktoren eines Typs, die keine Felder haben, "statisch zugewiesen" sind und GHC teilt diese zwischen allen Anwendungen , und dass der GC diese nicht verschiebt .

Wenn das korrekt ist, würde ich die Verwendung von reallyUnsafePtrEquality# auf Werte wie False und Nothing als sehr sicher (keine falsch negativen oder positiven), weil sie nur als identische Zeiger auf die dargestellt werden können einzelne Instanz dieses Konstruktors.

Stimmt meine Argumentation? Gibt es irgendwelche potenziellen Fehler oder Gründe zu vermuten, dass dies in naher Zukunft Versionen von GHC unsicher werden könnte?

    
jberryman 06.07.2014, 18:38
quelle

1 Antwort

11

Ich habe es tatsächlich geschafft, reallyUnsafePtrEquality dazu zu bringen, das Falsche zu tun.

Hier ist mein minimales Beispielcode

%Vor%

Und etwas wie

machen %Vor%

Also ... ja, reallyUnsafePtrEquality ist immer noch böse.

    
jozefg 07.07.2014 01:49
quelle

Tags und Links