ANN: H98 FFI Addendum 1.0, Release Candidate 10

Simon Marlow simonmar at microsoft.com
Mon Jun 2 04:51:16 EDT 2003


Alastair Reid writes:

> I strongly agree that we should definitely add the ability to 
> declare types 
> whose definition is provided externally.  (i.e., provide the 
> feature that empty datatype decls currently provide.)
> 
> Before adding them, we need to agree on the semantics and 
> syntax (in that order I think).
> 
> The obvious semantics based on the syntax is:
> 
> [[
>   The declaration
> 
>     data T
> 
>   introduces a type T whose only value is bottom.
> ]]
> 
> This semantics is obviously flawed though because it would 
> suggest that any 
> two values of type T are equal (and equal to bottom) and that 
> optimizations 
> based on that equality are valid.  Using an unpointed type 
> (i.e., the value 
> is not bottom) or saying there are no values bottom or 
> otherwise don't help.
> 
> The correct semantics has to be something roughly like:
> 
> [[
>   The declaration
> 
>     data T
> 
>   declares a type T whose set of values are defined externally to the
>   language. [optional sentence: There are no legal Haskell operations 
>   on values of type T.]
> ]]

If we were actually using values of type T in the way you suggest, I would agree.  But the way these empty datatypes are being used
is as dummy type arguments to Ptr, as in 'Ptr T'.  So I don't think there's any need to give special semantics to datatypes declared
with empty declarations.

(this is essentially what Marcin just said, but I'm being a bit more verbose).

Cheers,
	Simon




More information about the FFI mailing list