
Another conflict between the FFI spec and the current library implementation: the spec says
"The function bitSize returns 0 for types that don't have a fixed bitsize (e.g. Integer)."
whereas the current ghc implementation defines bitSize of Integer as a runtime error.
I think both are unfortunate - we should just admit that not every type has a bitsize and return a Maybe. But that doesn't seem likely to happen... It isn't clear which is the lesser of the two evils: - returning 0 is easy to catch but equally easy to carelessly forget - raising an exception is harder to catch but has the huge advantage that the failure is close to the broken code. (Does NHC support non-deterministic exceptions? Dead easy to add if not.) Hugs is silent on the issue because we never implemented Bits Integer. I think I prefer the GHC semantics. -- Alastair