È a mia conoscenza che i costruttori di un tipo che non hanno campi sono "allocati staticamente" e GHC shares these between all uses e che il GC will not move these.reallyUnsafePtrEquality # sui costruttori senza campi
Se questo è corretto allora mi aspetterei usi di reallyUnsafePtrEquality#
su valori come False
e Nothing
essere molto sicuro (senza falsi negativi o positivi), perché possono essere rappresentati solo come puntatori identici alla singola istanza di quel costruttore.
Il mio ragionamento è corretto? Esistono potenziali trucchi o motivi per sospettare che questo potrebbe diventare pericoloso nelle prossime versioni future di GHC?
Potrebbe essere vero. D'altra parte, sembra che per i costruttori senza campi le prestazioni superino il noioso vecchio '(==)' sarà piuttosto minimale ... –
@DanielWagner Il mio caso d'uso attuale sta funzionando con i prim primari CAS su referenze in scatola . Quando si utilizza la libreria 'atomic-primops' mi piacerebbe essere in grado di memorizzare un' Ticket Nothing' (per esempio) e assicurarsi che non vada mai in stallo. – jberryman
Potrebbe anche essere necessario fare attenzione ai plugin e simili. –