On 11/11/11 20:18, Phil Clayton wrote:
I am currently implementing type t val null : t val isNull : t -> bool where type t = CInterface.vol. There is no problem doing this but I wondered whether I could improve the CInterface structure to avoid annoying little C library functions.
I have realized that C functions are not necessary to implement these - just to toClong and fromClong:
val null = toClong 0 fun isNull v = fromClong v = 0
Would it be at all controversial to include null : vol in CInterface?
For a different reason, this could still be useful. I had forgotten that volatiles do not persist in saved states or executables (it should have been obvious from the name) so I can't see how to create such a null value to implement
val null : t
where type t = CInterface.vol. (There is nothing volatile about null really.)
Perhaps the best approach here is to implement with type t = CInterface.vol option, with NONE representing null.
Phil