On Mon, 2009-08-24 at 14:51 -0400, John Cowan wrote: > Thomas Lord scripsit: > > > Why not just stick to the much simpler REQUIRE and use naming > > conventions to distinguish exported from internal definitions in > > a library? > > Naming conventions collide: some day there may be more than one Tom Lord > writing Scheme code. Name prefixing puts the library *user* in control > of the conventions rather than the library author. (The other import > specifications, "only", "except", and "rename", support trivial special > cases: I wouldn't die to see them go.)
Ah. I just stupidly skimmed too quickly over the chicken docs you pointed me at and missed that it does import renaming/aliasing (with "prefix"). Sorry for the noise. So, yeah, the Chicken module system has the advantages you describe over just require/provide. I still say it's too big for small scheme (and too small for big scheme). In small scheme without it, you could implement something very close to it in a library, as syntax. You'd wind up with something that's more flexible (e.g., permitting open-ended ways to have multiple instantiations of a given "module"). > > There's nothing "of the essence" about the chicken module system. > > I presume it works very nicely in the context of Chicken but it seems > > kind of redundant and ad hoc and it adds implementation complexity - > > all of which I think disrecommends it for small Scheme. > > There's nothing "of the essence" about map and for-each either, but we > don't want to give them up. Oh, I wouldn't mind seeing map and for-each pushed off to libraries. Not at all. Now that you mention it it sounds like a good idea. I'm not sentimental. You (separately) asked what characters from ASCII I would omit requiring: any that aren't part of the lexical language, is the answer. I'd (personal preference) like small scheme to be something that can run on a 1-watt, low-memory system in, say, a light switch. I'd like to be able to use it in situations where I'm never going to load it up with more than a few lines of code (and couldn't, even if I wanted to). But the small scheme standard tells me what those few lines of code mean. By "of the essence" I mean that I just want the definition of small scheme to capture some basic properties of lambda and some invariants for basic data types and a some minimal form of syntactic extensiblity (hygiene not being high on the priority list but flexibility is). Heck, let's push AND/OR/IF/COND etc. off to a library. Most every implementation will likely have them built in, and that's just fine, but... Something like the core language to which Rabbit reduced all syntax... -t _______________________________________________ r6rs-discuss mailing list [email protected] http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss
