Related to my previous post [
https://groups.google.com/g/racket-users/c/OqyqDFxwhf0], I have several 
cases where I have this kind of pattern:

V1:

#lang racket
(provide +)

V2:

#lang racket
(provide [rename-out (my-+ +)])
(define my-+ …)

Each variant provides some/all primitives directly from the module's lang, 
while a sibling variant changes their behavior.

Since there are a lot of names, it gets tiresome to remember which things 
have and haven't been exported. Duplicates are of course caught statically, 
but missing names are not "caught" at all at module definition time.

It'd be nice to be able to write, say a block like

#lang racket
(provide-if-not-defined +)

at the top of BOTH files. In V1, this turns into provide; in V2 I'd still 
write the rename-out, but would only need to do this for the (usually) 
small number of operations that I am overriding. Having a common block at 
the top of each variant would ensure that the variants provide the same 
language.

Shriram

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/46a4bed5-1839-4482-b8f2-7b54076fbb7dn%40googlegroups.com.

Reply via email to