New text on Quotation John Cowan 17 Sep 2014 18:54 UTC

Here's the new material I've added to the Quotation section:

The various Scheme standards permit, but do not require, Scheme
implementations to treat quoted pairs and lists as immutable.  Thus
whereas the expression (set-car! (list 1 2 3) 10) evaluates to the list
(10 2 3), the expression (set-car! '(1 2 3) 10) is not portable and in
fact an error.

This SRFI recommends that implementations that provide both this SRFI
and immutable quotations should cause quotations to return the same
immutable pairs that this SRFI describes.  This means that the standard
Scheme pair and list operations, as well as libraries like SRFI 1 which
are built on them, should accept both mutable and immutable pairs: thus
(car (ilist 1 2)) should evaluate to 1.

This SRFI further recommends that read should return mutable pairs and
lists when reading list structure.  No recommendation is made about the
behavior of write, display, and similar output procedures on immutable

To make life easier for Scheme programmers, given that many
implementations do not provide immutable quotation, the syntax keyword
iq is provided as part of this SRFI.  It is analogous to quote, taking
an arbitrary number of literals and constructing an ilist from them,
with any pairs in the literals converted to ipairs. It is useful for
providing constant ipair-based objects.  Note that pairs within literal
vectors or other implementation-dependent literals will not be converted.
Unfortunately, there is no ilist analogue of ', so we save keystrokes
by using iq rather than iquote and omitting the top-level parentheses.

I've put the latest version at <>.

John Cowan
It was impossible to inveigle
Georg Wilhelm Friedrich Hegel
Into offering the slightest apology
For his Phenomenology.                      --W. H. Auden, from "People" (1953)