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