Brian Harvey scripsit: > I have no argument with the details of the notation, but could you > please provide some explanation for why you think this belongs in > Small Scheme? As you point out, it solves a limited class of problems,
I should rather say that it provides a imperfect solution to a rather general problem: how to construct things. The basic Scheme aggregate datatypes have three basic constructors: the make-<type> procedure, which creates an aggregate using some appropriate parameters such as length and initial value for all elements; the <type> procedure, which accepts an arbitrary number of arguments and creates the collection from them; and the literal form, which directly expresses an immutable aggregate using some idiosyncratic lexical syntax. Furthermore, the object has a print syntax which equals the lexical syntax. Adding this sort of lexical syntax extension means that user-defined (in practice, library-defined) types are also first-class in this way. It's easy to write make-foo and foo procedures, but not so easy to write a plausible literal syntax for foos. With the #v hack and the record printer, you get the nearest thing to it. > rather than elucidating the practical working out of some brilliant > general principle. Alas, my inventions don't run to that. (Hmm. Why is there no (make-list n [init])? -- John Cowan [email protected] http://www.ccil.org/~cowan Historians aren't constantly confronted with people who carry on self-confidently about the rule against adultery in the sixth amendment to the Declamation of Independence, as written by Benjamin Hamilton. Computer scientists aren't always having to correct people who make bold assertions about the value of Objectivist Programming, as examplified in the HCNL entities stored in Relaxational Databases. --Mark Liberman _______________________________________________ r6rs-discuss mailing list [email protected] http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss
