Jonathan S. Shapiro wrote:
I'm not entirely sure how to answer this, except to say that SML got
this dreadfully wrong. A type that is an internal part of an
implementation definitely should NOT be exported.

My sense is that if I export a symbol, I need to be exporting the types
associated with its signature. If the symbol is a function, this is the
argument and return types, but not anything that it has closed over.


I should have first asked the following question. When I write

(export t) ;t is some type

Does the recipient get the abstract type or the real type?

That is,

(module list
  (defunion (lst 'a) Nil (Cons 'a))
  (append ...)

(export lst append)
)

Can the importer of this module also do a Cons independent of the append interface?

Also, if I have
(module list

        (defunion (lst 'a) Nil (Cons 'a))
        (append ...)
        
        (define alst Nil)

        (export alst) )

Does the recipient also receive the type lst automatically?

Swaroop.
_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to