ANN: H98 FFI Addendum 1.0, Release Candidate 10

Alastair Reid alastair at reid-consulting-uk.ltd.uk
Sun Jun 1 17:55:10 EDT 2003


On Saturday 31 May 2003 10:11 pm, John Meacham wrote:
> This was discussed here before and there seemed to be some support for
> it, but how about adding the empty data declaration extension to the FFI
> spec?

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 go with a semantics like that, different syntax suggests itself like:

  external data T

or, better, 

  foreign import data T

I'm not especially keen to change the syntax (especially since the existing 
syntax is so trivial to implement) but if we're going to add this to the
language, we should make sure the syntax and semantics are tolerably
clear and in agreement with each other.

--
Alastair Reid



More information about the FFI mailing list