> On Oct 12, 2017, at 1:46 PM, Matthew Flatt <mfl...@cs.utah.edu> wrote:
> 
> You could put all the type exports in a submodule. Then, you do need
> your own variant of `require`, but that variant can mostly just check
> for the presence of a type submodule, much the way that TR or
> `plai-typed` do. If the submodule is available, you can import it with
> the extra scope for types.

This makes a lot of sense to me, but I’m not completely sure how to
implement the providing side. I imagine that users may very well want
to use Racket’s namespace management features with types, leading to
pathological declarations like this:

    (provide (except-out (all-from-out foo/bar)
                         (type-out ExcludedType)))

If type-out is a provide transformer that doesn’t actually provide
anything, it merely expands to a submodule (perhaps using
`syntax-local-lift-module-end-declaration`), then it can’t possibly
understand that it should be doing something different when used in
“excluding” position. Is the unfortunate answer here that I can’t get
around needing to reimplement my own version of `provide` as well?

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to