Re: What if...
Eric Kidd <[email protected]> 18 Sep 2002 10:36:54 -0400
| Newsgroups | gmane.comp.lang.goo.general |
|---|---|
| Message-ID | <1032359814.703.18.camel@whitestar> |
On Mon, 2002-08-12 at 07:44, Jonathan Hseu wrote: > Cool. But... what if I want to (use/export/mangle)? > I guess I could put an extra (use/export) at the end of the file, but > perhaps a better solution is necessary. > > It also becomes a bigger issue when we get selective imports. > For instance: > (use/pick tests/blah $pi) > > But what if we wanted to use/pick/mangle/export? Hello! I'm the guy who first implemented (export ...) and (use ...) in Proto. My original intention was add extra clauses to (use ...), similar to those in Dylan: (use foo/bar (rename f1 bar-f1) (exclude f2)) (use foo/bar (prefix foo-bar-)) (use foo/bar (export f1 (rename f2 foo-bar-f2) f3)) (export g1 (rename internal-g2 g2) g3) ...and so on. This keeps the entire import/export sytax in just two special forms, each of which implements a "little language". And it saves you the trouble of implementing 20 redundant (use/export/mangle ...) forms. Dylan actually does a pretty good job with selective importing, name mangling and exporting. I don't like introducing special forms with "/" in the name unless absolutely necessary--it seems to be "code smell" indicating that I haven't found the right abstraction to cover two special cases. Anyway, that's just my two cents... :-) Cheers, Eric