[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Scheme-reports] comments on draft 6: Libraries and Relationship of small/large lang
- To: Kun Liang <liangkun42@x>
- Subject: Re: [Scheme-reports] comments on draft 6: Libraries and Relationship of small/large lang
- From: John Cowan <cowan@x>
- Date: Wed, 22 Feb 2012 14:32:58 -0500
- Cc: scheme-reports@x
- In-reply-to: <CAAkBbybpa1=zYjX5sqOF_pRusfPr717vk9tgCJhd2oJxFPgT5Q@mail.gmail.com>
- References: <CAAkBbybpa1=zYjX5sqOF_pRusfPr717vk9tgCJhd2oJxFPgT5Q@mail.gmail.com>
Kun Liang scripsit:
> Following is my viewpoint. Small language should define all the
> "core" syntax and primitives. These will keep stable for a long period
> of time. Large language is just a small language with a much bigger
> set of standard libraries.
I personally agree with you, but as chair of WG2, I must say that until
WG2 has done its work it would be premature to say that.
> In this sense, I think that we do not need to seperate the
> functions or values (in draft 6) into several libraries. If they
> were essential, we can just put them into a single library like
> (scheme lang) or (scheme base), and import this library in every
> scheme program by default. Any thing that not essential (purely for
> compatibility with r5rs) should be place into a seperate library like
> (scheme r5rs), will be removed in future.
First of all, the base library is not about what is essential. `Length`
and `map` are not essential; indeed, they can be expressed clearly
enough in Scheme, and usually are. The base library contains the
procedures and syntax that a Scheme programmer would expect to find
available, plus some that are called into existence by symmetry, such as
`vector-map` and `string-map`.
Second, the distinction you are making is insufficiently flexible. For
example, non-real numbers are optional in both R5RS and R7RS. If you
don't have complex numbers, there is no point in having make-complex
and magnitude and phase, and R5RS says so in the text of the document.
In R7RS, this notion of optionality is made explicit by putting the
complex-number procedures into a module that implementations without
complex numbers need not provide. In other cases, a very small Scheme
may not wish to provide read or write/display at run time, because there
is no need for I/O of general Scheme objects, and so putthing them in a
module makes sense.
First known example of political correctness: John Cowan
After Nurhachi had united all the other http://www.ccil.org/~cowan
Jurchen tribes under the leadership of the cowan@x
Manchus, his successor Abahai (1592-1643)
issued an order that the name Jurchen should --S. Robert Ramsey,
be banned, and from then on, they were all The Languages of China
to be called Manchus.
Scheme-reports mailing list