[plt-scheme] What is '(1 . 2 . 3)
Thanks Sam and Jens :)
I was quite perplexed when this came up while I was teaching scheme to
my buddy :-/
- Akhilesh
On 16/11/06, Jens Axel Søgaard <jensaxel at soegaard.net> wrote:
> Akhilesh Mritunjai skrev:
> > Hi
> >
> > DrScheme 350 on Windows XP SP2 (and iirc, Solaris too)
> >
> >> '(1 . 2 . 3)
> > (2 1 3)
> >
> >> (quote (1 . 2 . 3)
> > (2 1 3)
> >
> > on #scheme (freenode), people were of opinion that it is a bug (I too
> > think so). Chez doesn't accept it.
>
> Search the HelpDesk for "." (without the ""):
>
> * A parenthesized sequence containing two delimited dots (``.'')
> triggers infix parsing. A single datum must appear between the dots,
> and one or more datums must appear before the first dot and after the
> last dot:
>
> (left-datum ···1 . first-datum . right-datum ···1)
>
> The resulting list consists of the datum between the dots, followed by
> the remaining datums in order:
>
> (first-datum left-datum ···1 right-datum ···1)
>
> Consequently, the input expression (1 . < . 2) produces #t, and
> (1 2 . + . 3 4 5) produces 15.
>
> To the double dot notation is for infix. It works will for contracts
> like (string? integer? . -> . boolean? ).
>
>
> If you want to disable the double dot notation, use the read-accept-dot
> parameter:
>
> * When the read-accept-dot parameter is set to #f, then a delimited dot
> (``.'') is disallowed in input. When the read-accept-quasiquote
> parameter is set to #f, then a backquote or comma is disallowed in
> input. These modes simplify Scheme's input model for students.
>
>
> About #scheme: Please enlighten them about the double dot notation.
> Note that with the exception of elibarilay, none (I know) of the
> #schemers is on this list. That is, for PLT questions ask here first.
>
>
>
> --
> Jens Axel Søgaard
>
>