Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
LISP - The Scary Readtable - () => {}
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  Messages 1 - 25 of 27 - Collapse all  -  Translate all to Translated (View all originals)   Newer >
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
ilias  
View profile  
 More options Sep 3 2002, 5:46 am
Newsgroups: comp.lang.lisp
From: ilias <at_n...@pontos.net>
Date: Tue, 03 Sep 2002 12:53:22 +0300
Local: Tues, Sep 3 2002 5:53 am
Subject: LISP - The Scary Readtable - () => {}
ilias wrote:

   > Matthew Danish wrote:
   >> On Mon, Sep 02, 2002 at 10:40:02AM +0300, ilias wrote:
   >>>> The crucial piece you are missing is that the reader-macro
   >>>> function for
   >>>> #\( is allowed to only look for a delimiting #\) character.

   >>> where do you get this information?

   >> I forgot to address this in my previous post.
   >>
   >> CLHS Chapter 2.4.1 ``Left-Parenthesis'':
   >>
   >> ``The left-parenthesis initiates reading of a list. read is called
   >> recursively to read successive objects until a right parenthesis
   >> is found in the input stream. A list of the objects read is
   >> returned.''
   >>
   >> As you can see, it explicitly says in the standard that the
   >> reader-macro for #\( is allowed to only look for a #\) character in
   >> the stream.  It does not need to look for anything more abstract
   >> than that.
   >

   > The paragraph "CLHS Chapter 2.4.1 ``Left-Parenthesis'':" is
   > misleading.
   >
   > So you've derived a wrong conclusion.
   >
   > #\} (closing_brace) is a legal terminator for the
   >
   > Proof:
   >
   > not enouth margin.
   >
   > i'll be back in an hour!
   >

here it is:

A fresh #V0.1 text, fully unreviewed. please forgive the delay
please remember that i'm a LISP-novice.

;;;---------------------------------------------------------------------
;;; The Scary Readtable
;;;---------------------------------------------------------------------

( ) => { } - [with CommonLisp conforming code]

http://www.lispworks.com/reference/HyperSpec/Body/02_da.htm
 > The left-parenthesis initiates reading of a list.
 > read is called recursively to read successive objects
 > until a right parenthesis is found in the input stream.

This is true for the standard-syntax (standard-readtable).

http://www.lispworks.com/reference/HyperSpec/Body/02_d.htm
 > The macro characters defined initially in a conforming implementation
 > include the following:

 > 2.4.2 Right-Parenthesis

The functionality of right parenthesis is integrated in the
reader-system via its macro-character-function.

http://www.lispworks.com/reference/HyperSpec/Body/02_db.htm
 > The right-parenthesis is invalid except when used in conjunction with
 > the left parenthesis character. For more information, see Section 2.2
 > (Reader Algorithm).

the call (set-syntax-of-char #\{ #\( ) is conforming,

but the resulting form: {a b c) is not!

but after the second conforming call
(set-syntax-of-char #\} #\) )

{a b c}
becomes valid...

Someone may says, here is a weak point in the proof:

The implementor may don't use the reader-macro-function of ')' but to
compare directly the char retrieved via read-char.

Lets look further:

http://www.lispworks.com/reference/HyperSpec/Body/02_a.htm
   > The Lisp reader takes characters from a stream, interprets them as a
   > printed representation of an object, constructs that object, and
   > returns it.

   > The syntax described by this chapter is called the standard syntax.
   > Operations are provided by Common Lisp so that various aspects
   > of the syntax information represented by a readtable can be modified
   > under program control; see Section 23 (Reader). Except as explicitly
   > stated otherwise, the syntax used throughout this document is
   > standard syntax.

An conforming implementation has to support the standard syntax.

http://www.lispworks.com/reference/HyperSpec/Body/02_aa.htm
 > Syntax information for use by the Lisp reader is embodied in an
 > object called a readtable. Among other things, the readtable
 > contains the association between characters and syntax types.

The readtable embodies the syntax information for the Lisp reader.

http://www.lispworks.com/reference/HyperSpec/Body/t_rdtabl.htm#readtable
 > A readtable maps characters into syntax types for the Lisp reader;
 > see Section 2 (Syntax). A readtable also contains associations between
 > macro characters and their reader macro functions, and records
 > information about the case conversion rules to be used by the Lisp
 > reader when parsing symbols.

 > Each simple character must be representable in the readtable.

http://www.lispworks.com/reference/HyperSpec/Body/02_ac.htm
 > All implementations must support a character repertoire called
 > standard-char; characters that are members of that repertoire are
 > called standard characters.

left & right parenthesis are included in the readtables.
left & right braces are included in the readtables.

The standard-syntax must be modifyable by change of the readtable:
http://www.lispworks.com/reference/HyperSpec/Body/t_rdtabl.htm#readtable

However, it is not allowed to change the standard-readtable itself:
http://www.lispworks.com/reference/HyperSpec/Body/26_glo_s.htm#standa...

so the calls:

(set-syntax-of-char #\} #\) )
(set-syntax-of-char #\{ #\( )

were not allowed to be used while the standard-readtable is the
current-readtable.

But the following is not only *allowed*.

A conforming CommonLisp implementation *must* execute:

(setq *backup-readtable* (copy-readtable) )      ; backup current

;;;create a new readtable, with actual readtable
(setq *scary-readtable* (copy-readtable) )

(copy-readtable *scary-readtable* *readtable*) ; activates readtable

;;; following code modifies the *scary-readtable*
(set-syntax-from-char #\} #\) )  ;
(set-syntax-from-char #\{ #\( )  ;

{+ 3 2}                        ; => 5
(+ 3 2)                        ; => 5

(copy-readtable *backup-readtable* *readtable*) ; restore

{+ 3 2}                        ; [original behaviour]
(+ 3 2)                        ; => 5
;;;-----------------------------------------------------------------
ilias - 2002-09-03 - #V0.1
;;;-----------------------------------------------------------------

Xanalys LispWorks: OK
Franz Allegro    : fails
Corman Lisp      : fails

...?


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Pascal Costanza  
View profile  
 More options Sep 3 2002, 6:16 am
Newsgroups: comp.lang.lisp
From: Pascal Costanza <costa...@web.de>
Date: Tue, 03 Sep 2002 12:16:54 +0200
Local: Tues, Sep 3 2002 6:16 am
Subject: Re: LISP - The Scary Readtable - () => {}

ilias wrote:
> here it is:

> A fresh #V0.1 text, fully unreviewed. please forgive the delay
> please remember that i'm a LISP-novice.

> ;;;---------------------------------------------------------------------
> ;;; The Scary Readtable
> ;;;---------------------------------------------------------------------

> ( ) => { } - [with CommonLisp conforming code]

Your message has too many off-topic and irrelevant details in it. You
give too much information that noone is interested in. Noone will ever
_seriously_ attempt to just replace parentheses by curly braces because
there is no good reason to do that. (And this _is_ a very exact and
precise comment to your message.)

> Xanalys LispWorks: OK
> Franz Allegro    : fails
> Corman Lisp      : fails

> ...?

Please see the glossary in the HyperSpec - here are some quotes:

"conforming implementation n. an implementation, used to emphasize
complete and correct adherance to all conformance criteria. A conforming
implementation is capable of accepting a conforming program as input,
preparing that program for execution, and executing the prepared program
in accordance with this specification. An implementation which has been
extended may still be a conforming implementation provided that no
extension interferes with the correct function of any conforming program.

conforming program n. a program, used to emphasize the fact that the
program depends for its correctness only upon documented aspects of
Common Lisp, and can therefore be expected to run correctly in any
conforming implementation."

Your program runs only on LispWorks so it is obviously not a conforming
program.

Please see also section 1.5 "Conformance" in the HyperSpec.

You haven't found any kind of proof whatsoever, but you have just
stumbled across minor implementation details with regard to conformance
that are only slightly interesting to the majority of Common Lisp users.

Pascal


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "The origin of blindness (Was: Re: LISP - The Scary Readtable - () => {})" by Alexey Dejneka
Alexey Dejneka  
View profile  
 More options Sep 3 2002, 7:09 am
Newsgroups: comp.lang.lisp
From: Alexey Dejneka <adejn...@comail.ru>
Date: 03 Sep 2002 15:11:36 +0400
Local: Tues, Sep 3 2002 7:11 am
Subject: The origin of blindness (Was: Re: LISP - The Scary Readtable - () => {})

Pascal Costanza <costa...@web.de> writes:
> ilias wrote:

The opponents of ilias miss a very simple idea: in the conformant
implementation of iCL after executing

  (setq *scary-readtable* (copy-readtable) )
  (copy-readtable *scary-readtable* *readtable*)
  (set-syntax-from-char #\} #\) )
  (set-syntax-from-char #\{ #\( )

the form (eql #\) #\}) returns T (proof was given earlier).

--
Regards,
Alexey Dejneka :-)

---
11:04:01 <wnewman> bad voodoo is when you can't explain why it works,
seriously bad voodoo is when you can't even explain what it is, and
the comment is like "don't touch the code in this file or it will
probably stop working":-)


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "LISP - The Scary Readtable - () => {}" by ilias
ilias  
View profile  
 More options Sep 3 2002, 7:18 am
Newsgroups: comp.lang.lisp
From: ilias <at_n...@pontos.net>
Date: Tue, 03 Sep 2002 14:24:31 +0300
Local: Tues, Sep 3 2002 7:24 am
Subject: Re: LISP - The Scary Readtable - () => {}

i see you use my words of my last answer to you tonight.

i was just writing the answer to your post, that i was not able to
answer, cause i was analyzing. i'd had better explained that.

sorry, if you felt attacked or rejected or somewhat. It was a little
rude from me, but i'm not always a good diplomat while in
assimilation-process.

now ok, i'll answer this here first.

> give too much information that noone is interested in.

i don't think so.
the information is out of the specs.
although it fits well in the general climatic conditions in this forum,
i suggest you to speak for yourself. It can be dangerous to use to early
  the 'we'-form in a community.

> Noone will ever
> _seriously_ attempt to just replace parentheses by curly braces because
> there is no good reason to do that.
> (And this _is_ a very exact and precise comment to your message.)

so i review it with precision.

i (i am one) have just attempt to do that.
'_seriously_' is relative.
But a conformity-check is a good and serious reason.

>> Xanalys LispWorks: OK
>> Franz Allegro    : fails
>> Corman Lisp      : fails

>> ...?

> Please see the glossary in the HyperSpec - here are some quotes:

i've look at the CLHS (Common Lisp HyperSpec) all the night.

> "conforming implementation n. an implementation, used to emphasize
> complete and correct adherance to all conformance criteria. A conforming
> implementation is capable of accepting a conforming program as input,
> preparing that program for execution, and executing the prepared program
> in accordance with this specification. An implementation which has been
> extended may still be a conforming implementation provided that no
> extension interferes with the correct function of any conforming program.

> conforming program n. a program, used to emphasize the fact that the
> program depends for its correctness only upon documented aspects of
> Common Lisp, and can therefore be expected to run correctly in any
> conforming implementation."

thanks that you quote the basic fundament of the language conformity proof.

> Your program runs only on LispWorks so it is obviously not a conforming
> program.

false.

for your statement beeing true, the other CL-implementations must be
conforming.

My conforming programm is not accepted by uncomforming implementations
of Common Lisp.

They may have simply missinterpretated the specs, or they have a simple
bug in their code.

They are analysts, programmers - not gods. As the writer of the specs.

And as i'm not a god, too, my proof is maybe wrong.

> Please see also section 1.5 "Conformance" in the HyperSpec.

I'm tired. Will eat something. And the i have to answer some people here.

> You haven't found any kind of proof whatsoever, but you have just
> stumbled across minor implementation details with regard to conformance
> that are only slightly interesting to the majority of Common Lisp users.

Thats fine. So they are at minimum slightly interesting to the minority
of CL users.

Attack the proofing-line at a specific point.

What is your main interest?

The true/false state of the proof?

Or to be accepted by this community here?

You can have both.

Let us be gentleman!!!


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Pascal Costanza  
View profile  
 More options Sep 3 2002, 8:27 am
Newsgroups: comp.lang.lisp
From: Pascal Costanza <costa...@web.de>
Date: Tue, 03 Sep 2002 14:09:33 +0200
Local: Tues, Sep 3 2002 8:09 am
Subject: Re: LISP - The Scary Readtable - () => {}

Yes.

> now ok, i'll answer this here first.

>> give too much information that noone is interested in.

> i don't think so.

...but I think so. You haven't given any reason yet why you would want
to replace parentheses by curly braces. It doesn't make any sense.

Here is an analogy: when you try to learn English, you don't start by
replacing some of the letters of the English alphabet with Greek letters
just to make it look "nicer".

> the information is out of the specs.

...but is not relevant to the question why you want to replace the
parentheses with something else. If you are interested in a fruitful
discussion you should first explain why you want this replacement.

> although it fits well in the general climatic conditions in this forum,
> i suggest you to speak for yourself. It can be dangerous to use to early
>  the 'we'-form in a community.

I have used the "we"-form as a rhetoric device. Sorry, if this was
unclear. To be more precise: I cannot imagine that anyone, including
you, would seriously want to replace parentheses with something else.
Maybe my imagination is lacking, but then I would be happy to learn what
the benefit would be of changing the parentheses into something else.

>> Noone will ever _seriously_ attempt to just replace parentheses by
>> curly braces because there is no good reason to do that.
>> (And this _is_ a very exact and precise comment to your message.)

> so i review it with precision.

> i (i am one) have just attempt to do that.

...and why do you need this? What is your motivation?

> '_seriously_' is relative.

No it isn't. Here is a quote from a dictionary: "'serious' implies a
concern for what really matters". Syntax is superficial, you don't get
more expressive power by replacing parentheses with curly braces. I
don't think that such a replacement "really matters" when compared to
the big advantages you get by using Common Lisp's expressive power at
the semantic level.

> But a conformity-check is a good and serious reason.

For what purpose?

[...]

> Attack the proofing-line at a specific point.

Why?

> What is your main interest?

...to understand why you want to replace parentheses with curly braces.
Why do you need this? Is checking the conformance of Common Lisp
implementations a hobby of yours?

> The true/false state of the proof?

No, I am not interested at all in this proof. My impression is that you
are trying to solve a specific problem with the wrong means. Are you
really interested in getting help with the concrete problem you want to
solve? Then you should perhaps give more information about the context
for which you want to have a solution.

My impression was that you are looking for your "dream" language that -
among other things - should have a specific syntax that pleases your
eyes, conforms to your sense of aesthetics. Is this the case?

If yes, you are using the wrong languages and the wrong tools.

If no, please explain what you are actually after.

Pascal


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
ilias  
View profile  
 More options Sep 3 2002, 8:35 am
Newsgroups: comp.lang.lisp
From: ilias <at_n...@pontos.net>
Date: Tue, 03 Sep 2002 15:41:54 +0300
Local: Tues, Sep 3 2002 8:41 am
Subject: Re: LISP - The Scary Readtable - () => {}

Pascal Costanza wrote:

...

> If no, please explain what you are actually after.

i'll talk with you about ghosts.

be friendly.

than i'll conversate with you again.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Matthew Danish  
View profile  
 More options Sep 3 2002, 8:37 am
Newsgroups: comp.lang.lisp
From: Matthew Danish <mdan...@andrew.cmu.edu>
Date: Tue, 3 Sep 2002 08:37:09 -0400
Local: Tues, Sep 3 2002 8:37 am
Subject: Re: LISP - The Scary Readtable - () => {}
On Tue, Sep 03, 2002 at 12:53:22PM +0300, ilias wrote:

[quotes omitted]

> the call (set-syntax-of-char #\{ #\( ) is conforming,

> but the resulting form: {a b c) is not!

It is not the resulting form. (technicality)
But you can now type {a b c) in and obtain similar behavior to (a b c).

> but after the second conforming call
> (set-syntax-of-char #\} #\) )

> {a b c}
> becomes valid...

Then why is {a b c) not valid?  Here you are neglecting the additional
fact that the reader-macro for #\{ looks for a #\).  Therefore the
value of {a b c} at this point is not equivalent to (a b c).

> Someone may says, here is a weak point in the proof:

> The implementor may don't use the reader-macro-function of ')' but to
> compare directly the char retrieved via read-char.

None of your quotes or arguments address this weak point.

[more quotes omitted, to save space]

> A conforming CommonLisp implementation *must* execute:

> (setq *backup-readtable* (copy-readtable) )      ; backup current

> ;;;create a new readtable, with actual readtable
> (setq *scary-readtable* (copy-readtable) )

> (copy-readtable *scary-readtable* *readtable*) ; activates readtable

> ;;; following code modifies the *scary-readtable*
> (set-syntax-from-char #\} #\) )  ;
> (set-syntax-from-char #\{ #\( )  ;

Doing this does not (eql #\} #\)) make.

LispWorks's behavior is an extension to the specification.  There is no
question that people far more experienced than you have been working on
Allegro CL and Corman Lisp for years and even decades.  While there is
the possibility that even a newcomer could discover a misinterpretation
or a bug, that should come as a great surprise to him.  Blaming the
compiler for one's own flawed logic is an old excuse in many venues, and
not accepted in any one.  Rather you should eliminate all other possible
sources of doubt, and re-examine your statements until they are
air-tight.  The fact that many people have already picked apart your
claims should be alerting you that something is wrong with your
inferences.

If you still don't understand what is wrong, even after re-reading the
counter-arguments that myself and others have posted, then attempt to
narrow down your confusion and formulate a specific question.  You may
even be able to answer it yourself, once you've written it down.

--
; Matthew Danish <mdan...@andrew.cmu.edu>
; OpenPGP public key: C24B6010 on keyring.debian.org
; Signed or encrypted mail welcome.
; "There is no dark side of the moon really; matter of fact, it's all dark."


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Paul F. Dietz  
View profile  
 More options Sep 3 2002, 8:47 am
Newsgroups: comp.lang.lisp
From: "Paul F. Dietz" <di...@dls.net>
Date: Tue, 03 Sep 2002 12:47:00 GMT
Subject: Re: LISP - The Scary Readtable - () => {}

ilias wrote:
> i'll talk with you about ghosts.

> be friendly.

> than i'll conversate with you again.

Ok everyone, ilias will not 'conversate' with us if we're
not friendly.

I want everyone to be as unfriendly as possible with
this person, preferably by email.  Go for it.

        Paul


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
ilias  
View profile  
 More options Sep 3 2002, 8:57 am
Newsgroups: comp.lang.lisp
From: ilias <at_n...@pontos.net>
Date: Tue, 03 Sep 2002 16:04:28 +0300
Local: Tues, Sep 3 2002 9:04 am
Subject: Re: LISP - The Scary Readtable - () => {}

you make a public call for spamming me?

bravo!


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "The origin of blindness (Was: Re: LISP - The Scary Readtable - () => {})" by ilias
ilias  
View profile  
 More options Sep 3 2002, 9:03 am
Newsgroups: comp.lang.lisp
From: ilias <at_n...@pontos.net>
Date: Tue, 03 Sep 2002 16:10:13 +0300
Local: Tues, Sep 3 2002 9:10 am
Subject: Re: The origin of blindness (Was: Re: LISP - The Scary Readtable - () => {})

false. the result in NIL

the correct line is:

(eql (get-macro-character #\) )  (get-macro-character #\} )) => T

in any conformat implementation of CL.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "LISP - The Scary Readtable - () => {}" by Pascal Costanza
Pascal Costanza  
View profile  
 More options Sep 3 2002, 9:15 am
Newsgroups: comp.lang.lisp
From: Pascal Costanza <costa...@web.de>
Date: Tue, 03 Sep 2002 15:15:41 +0200
Local: Tues, Sep 3 2002 9:15 am
Subject: Re: LISP - The Scary Readtable - () => {}

ilias wrote:
> Pascal Costanza wrote:

> ...

>> If no, please explain what you are actually after.

> i'll talk with you about ghosts.

Sorry, I don't understand this sentence. What do you mean?

> be friendly.

What makes you think I am not?

Pascal


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
ilias  
View profile  
 More options Sep 3 2002, 9:28 am
Newsgroups: comp.lang.lisp
From: ilias <at_n...@pontos.net>
Date: Tue, 03 Sep 2002 16:34:16 +0300
Local: Tues, Sep 3 2002 9:34 am
Subject: Re: LISP - The Scary Readtable - () => {}

Matthew Danish wrote:
> On Tue, Sep 03, 2002 at 12:53:22PM +0300, ilias wrote:
> [quotes omitted]

>>the call (set-syntax-of-char #\{ #\( ) is conforming,

>>but the resulting form: {a b c) is not!

> It is not the resulting form. (technicality)
> But you can now type {a b c) in and obtain similar behavior to (a b c).

you are right. i'll change this.

>>but after the second conforming call
>>(set-syntax-of-char #\} #\) )

>>{a b c}
>>becomes valid...

> Then why is {a b c) not valid?  

i quoted:
 > http://www.lispworks.com/reference/HyperSpec/Body/02_db.htm
 >> The right-parenthesis is invalid except when used in conjunction with
 >> the left parenthesis character. For more information, see Section 2.2
 >> (Reader Algorithm).

> Here you are neglecting the additional
> fact that the reader-macro for #\{ looks for a #\).  Therefore the
> value of {a b c} at this point is not equivalent to (a b c).

see above.

>>Someone may says, here is a weak point in the proof:

>>The implementor may don't use the reader-macro-function of ')' but to
>>compare directly the char retrieved via read-char.

> None of your quotes or arguments address this weak point.
> [more quotes omitted, to save space]

what you have omitted do this. the complete following line.

but ok, maybe i add an comment.

>>A conforming CommonLisp implementation *must* execute:

>>(setq *backup-readtable* (copy-readtable) )      ; backup current

>>;;;create a new readtable, with actual readtable
>>(setq *scary-readtable* (copy-readtable) )

>>(copy-readtable *scary-readtable* *readtable*) ; activates readtable

>>;;; following code modifies the *scary-readtable*
>>(set-syntax-from-char #\} #\) )  ;
>>(set-syntax-from-char #\{ #\( )  ;

> Doing this does not (eql #\} #\)) make.

this would be an error.

what it does make is:
  (eql (get-macro-character #\()  (get-macro-character #\{) ) = T

just words? no proof? no link? no reference?

Stop this phrases about experience and all that.

i have given a clear argumentation line.

attack it.

with words, backed up by links, references, links. Minimalistic.

reduce, don't rase complexity.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
ilias  
View profile  
 More options Sep 3 2002, 9:44 am
Newsgroups: comp.lang.lisp
From: ilias <at_n...@pontos.net>
Date: Tue, 03 Sep 2002 16:51:22 +0300
Local: Tues, Sep 3 2002 9:51 am
Subject: Re: LISP - The Scary Readtable - () => {}
Pascal Costanza wrote:
> ilias wrote:

>> Pascal Costanza wrote:

>> ...

>>> If no, please explain what you are actually after.

>> i'll talk with you about ghosts.

> Sorry, I don't understand this sentence. What do you mean?

you ask permanently what i'm after.

you say: there's a ghost.

i say: no there isn't.

>> be friendly.

> What makes you think I am not?

'ghosts' and your writing style.

simply reread in a few hours or tomorrow.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Takehiko Abe  
View profile  
 More options Sep 3 2002, 10:08 am
Newsgroups: comp.lang.lisp
From: k...@ma.ccom (Takehiko Abe)
Date: Tue, 03 Sep 2002 23:05:53 +0900
Local: Tues, Sep 3 2002 10:05 am
Subject: Re: LISP - The Scary Readtable - () => {}

In article <3D74B144.D1B5B...@dls.net>, Paul F. Dietz wrote:
> Ok everyone, ilias will not 'conversate' with us if we're
> not friendly.

> I want everyone to be as unfriendly as possible with
> this person, preferably by email.  Go for it.

No. That is not going to work. I believe this Ilias actually enjoys
unfriendly responses.

Elias once revealed the secret power of questioning in his article
"Crowds and Power":

    Sometimes, however, the questioner is not content with
    this [an answer] and will put further questions. If these
    continue the person they are addressed to soon becomes
    annoyed: [...]

    On the questioner the effect is an enhanced feeling of
    power. He enjoys this and consequently asks more and more
    questions; every answer he receives is an act of submission.
    [...]

So, what we have here is a prototypical troll. His goal is to annoy as
many people as possible and keep drawing responses. Elias continues:

    It is possible to find answers which prevent further
    questions. Alternatively, anyone [...] can counter with
    questions of his own: [...]

Note how Ilias spends least possible effort to answer counter-
questions he is asked.

Lastly, Elias also wrote: "Questions are intended to be answered;

those which are not answered are like arrows shot into the air."

--
This message was not sent to you unsolicited.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
ilias  
View profile  
 More options Sep 3 2002, 10:35 am
Newsgroups: comp.lang.lisp
From: ilias <at_n...@pontos.net>
Date: Tue, 03 Sep 2002 17:41:46 +0300
Local: Tues, Sep 3 2002 10:41 am
Subject: Re: LISP - The Scary Readtable - () => {}

knowledge is a dangerous thing.

i aswer the questions to me, that are in-topic.

i share the 'products' of my learning process with the public.

do you really think i enjoy filtering the mass of off-context, off-topic
and off-civility replies.

why don't you comment my 2-liner for the 1st problem i asked the group?
I've posted it?

Why don't you comment / disproof my claim, that {}-forms are conformant
CommonLisp?

Cool down.

Raise the quality of this group.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Pascal Costanza  
View profile  
 More options Sep 3 2002, 10:53 am
Newsgroups: comp.lang.lisp
From: Pascal Costanza <costa...@web.de>
Date: Tue, 03 Sep 2002 16:53:07 +0200
Local: Tues, Sep 3 2002 10:53 am
Subject: Re: LISP - The Scary Readtable - () => {}

Yes, and you haven't answered this yet. However, I think it is crucial
to understand your motivations in order to give you the help you need.

I think that you can help moving this discussion forward by clearly
stating your goals. And I don't think it's too hard for you to answer my
questions.

> you say: there's a ghost.

> i say: no there isn't.

>>> be friendly.

>> What makes you think I am not?

> 'ghosts' and your writing style.

> simply reread in a few hours or tomorrow.

You are just trying to guess what _my_ motivations are and try to avoid
to answer my questions.

Stop these statements about ghosts and all that.

I have stated a clear question.

Answer it.

With words, backed up by goals, rationale, motivation. Minimalistic.

Reduce, don't increase the complexity.

Pascal


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
ilias  
View profile  
 More options Sep 3 2002, 11:31 am
Newsgroups: comp.lang.lisp
From: ilias <at_n...@pontos.net>
Date: Tue, 03 Sep 2002 18:37:55 +0300
Local: Tues, Sep 3 2002 11:37 am
Subject: Re: LISP - The Scary Readtable - () => {}

i don't try.
and i'm not interested in your person.
you are not friendly.

> Stop these statements about ghosts and all that.

ok.

> I have stated a clear question.

many times.

> Answer it.

imperative.
rejected.

> With words, backed up by goals, rationale, motivation. Minimalistic.

yes, use this for disproof.

> Reduce, don't increase the complexity.

i reduce.

cool down. i'll be there.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "The origin of blindness (Was: Re: LISP - The Scary Readtable - () => {})" by Alexey Dejneka
Alexey Dejneka  
View profile  
 More options Sep 3 2002, 12:33 pm
Newsgroups: comp.lang.lisp
From: Alexey Dejneka <adejn...@comail.ru>
Date: 03 Sep 2002 20:36:23 +0400
Local: Tues, Sep 3 2002 12:36 pm
Subject: Re: The origin of blindness (Was: Re: LISP - The Scary Readtable - () => {})

ilias <at_n...@pontos.net> writes:
> Alexey Dejneka wrote:
> > Pascal Costanza <costa...@web.de> writes:

> >>ilias wrote:

> > The opponents of ilias miss a very simple idea: in the conformant
> > implementation of iCL after executing
> >   (setq *scary-readtable* (copy-readtable) )
> >   (copy-readtable *scary-readtable* *readtable*)
> >   (set-syntax-from-char #\} #\) )
> >   (set-syntax-from-char #\{ #\( )
> > the form (eql #\) #\}) returns T (proof was given earlier).

> false. the result in NIL

Heh. Let's see the proof.

ilias wrote:
> "giving } the *same* *definition* as the standard definition of the
> character )"

> this is very clear. If the closing_brace gets the same definition of
> the closing_paren, then the closing_brace must behave like a
> closing_paren.

> Conclusion: the reader *must* recognize the closing_brace

Ok. When the reader see ``#\)'', what is the behavior of ``)''
preceded by ``#\''? It is to return the character ``)''. What is the
behavior of ``}'' preceded by ``#\''? The same. So, the reader must
return the character ``)''. Therefore
  (eql #\) #\}) => T
QED

Where do you see a mistake?

--
Regards,
Alexey Dejneka


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
ilias  
View profile  
 More options Sep 3 2002, 12:44 pm
Newsgroups: comp.lang.lisp
From: ilias <at_n...@pontos.net>
Date: Tue, 03 Sep 2002 19:51:13 +0300
Local: Tues, Sep 3 2002 12:51 pm
Subject: Re: The origin of blindness (Was: Re: LISP - The Scary Readtable - () => {})
Alexey Dejneka wrote:

...

>>"giving } the *same* *definition* as the standard definition of the
>>character )"

>>this is very clear. If the closing_brace gets the same definition of
>>the closing_paren, then the closing_brace must behave like a
>>closing_paren.

>>Conclusion: the reader *must* recognize the closing_brace

this is an early-text, and i agree, misleading.

> Ok. When the reader see ``#\)'', what is the behavior of ``)''
> preceded by ``#\''? It is to return the character ``)''. What is the
> behavior of ``}'' preceded by ``#\''? The same. So, the reader must
> return the character ``)''. Therefore
>   (eql #\) #\}) => T
> QED

> Where do you see a mistake?

in the way i wrote. missleading.

take the new text. its more precise.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "LISP - The Scary Readtable - () => {}" by Fred Gilham
Fred Gilham  
View profile  
 More options Sep 3 2002, 2:20 pm
Newsgroups: comp.lang.lisp
From: Fred Gilham <gil...@snapdragon.csl.sri.com>
Date: 03 Sep 2002 11:19:56 -0700
Local: Tues, Sep 3 2002 2:19 pm
Subject: Re: LISP - The Scary Readtable - () => {}

ilias wrote:
> Matthew Danish wrote:
> > On Tue, Sep 03, 2002 at 12:53:22PM +0300, ilias wrote:
> > [quotes omitted]

> >>the call (set-syntax-of-char #\{ #\( ) is conforming,

> >>but the resulting form: {a b c) is not!

> > It is not the resulting form. (technicality)
> > But you can now type {a b c) in and obtain similar behavior to
> > (a b c).

> you are right. i'll change this.

You can't (not the way you're trying to do it).

The standard allows a conforming implementation to look for the
close-paren character.  You'll have to re-write code in the lisp
reader.

Here's the code for read-list, which is what the CMUCL reader uses as
the reader macro function for #\(

(defun read-list (stream ignore)
  (declare (ignore ignore))
  (let* ((thelist (list nil))
         (listtail thelist))
    (do ((firstchar (flush-whitespace stream) (flush-whitespace stream)))
        ((char= firstchar #\) ) (cdr thelist))
      (when (char= firstchar #\.)
            (let ((nextchar (read-char stream t)))
              (cond ((token-delimiterp nextchar)
                     (cond ((eq listtail thelist)
                            (%reader-error stream "Nothing appears before . in list."))
                           ((whitespacep nextchar)
                            (setq nextchar (flush-whitespace stream))))
                     (rplacd listtail
                             ;;return list containing last thing.
                             (car (read-after-dot stream nextchar)))
                     (return (cdr thelist)))
                    ;;put back nextchar so we can read it normally.
                    (t (unread-char nextchar stream)))))
      ;;next thing is not an isolated dot.
      (let ((listobj (read-maybe-nothing stream firstchar)))
        ;;allows the possibility that a comment was read.
        (when listobj
              (rplacd listtail listobj)
              (setq listtail listobj))))))

You'll notice that the do loop has the following end test:

     (char= firstchar #\) )

This is a hard-coded comparison to the right parenthesis character.
Thus you can't make the CMUCL reader accept something other than
right-parenthesis as the closing list delimiter without modifying this
code.

This is conforming behavior, as has already been pointed out.

If you decide to modify this code, you'd have to do similar things for
Allegro Common Lisp and other Lisps that don't have the behavior you
want --- and you may not have access to the source code to do the
modification.

--
Fred Gilham                                   gil...@csl.sri.com
Lisp has jokingly been called "the most intelligent way to misuse a
computer". I think that description is a great compliment because it
transmits the full flavor of liberation: it has assisted a number of
our most gifted fellow humans in thinking previously impossible
thoughts.   E. Dijkstra


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Gareth McCaughan  
View profile  
 More options Sep 3 2002, 2:38 pm
Newsgroups: comp.lang.lisp
From: Gareth.McCaug...@pobox.com (Gareth McCaughan)
Date: Tue, 3 Sep 2002 19:28:22 +0100
Local: Tues, Sep 3 2002 2:28 pm
Subject: Re: LISP - The Scary Readtable - () => {}
"ilias" believes that after doing set-syntax-from-char
on #\{ (from \#() and on \#} (from #\)), the reader
should interpret {a b c} in the same way as it does (a b c).
The parent of this article (much of which is quoted below)
claims to be a proof of that.

Ilias, you may want to skip everything between the line
that says "*** START SKIPPING HERE" and the line that says
"*** STOP SKIPPING HERE", if you're in a hurry. What's
between those lines is point-by-point comment on what
you wrote. What's after them is an explanation of why
your attempted proof is not successful.

*** START SKIPPING HERE

> http://www.lispworks.com/reference/HyperSpec/Body/02_da.htm
>  > The left-parenthesis initiates reading of a list.
>  > read is called recursively to read successive objects
>  > until a right parenthesis is found in the input stream.

> This is true for the standard-syntax (standard-readtable).

Correct.

> http://www.lispworks.com/reference/HyperSpec/Body/02_d.htm
>  > The macro characters defined initially in a conforming implementation
>  > include the following:

>  > 2.4.2 Right-Parenthesis

> The functionality of right parenthesis is integrated in the
> reader-system via its macro-character-function.

The spec doesn't say that. It says that #\) is defined
as a macro character in every conforming implementation.
It *doesn't* say what its definition as a macro character
has to accomplish; in particular, it doesn't say that
its definition as a macro character has to be what makes
it work together with #\(.

I think that in most implementations, the macro character
definition of #\) just signals an error.

> http://www.lispworks.com/reference/HyperSpec/Body/02_db.htm
>  > The right-parenthesis is invalid except when used in conjunction with
>  > the left parenthesis character. For more information, see Section 2.2
>  > (Reader Algorithm).

> the call (set-syntax-of-char #\{ #\( ) is conforming,

> but the resulting form: {a b c) is not!

That is not a form. It's a string of characters.
"{a b c)" may be interpreted as denoting a list
by the Lisp reader after you do (set-syntax-from-char #\{ #\(),
and I think that's perfectly legal. The statement that #\)
is "invalid" except after #\( describes a CL implementation
in its initial state; you can change that state.

> but after the second conforming call
> (set-syntax-of-char #\} #\) )

> {a b c}
> becomes valid...

That's your claim. It is not supported by the spec.

> Someone may says, here is a weak point in the proof:

> The implementor may don't use the reader-macro-function of ')' but to
> compare directly the char retrieved via read-char.

And you have correctly identified the way in which
your claim is wrong :-).

> Lets look further:

> http://www.lispworks.com/reference/HyperSpec/Body/02_a.htm
>    > The Lisp reader takes characters from a stream, interprets them as a
>    > printed representation of an object, constructs that object, and
>    > returns it.

>    > The syntax described by this chapter is called the standard syntax.
>    > Operations are provided by Common Lisp so that various aspects
>    > of the syntax information represented by a readtable can be modified
>    > under program control; see Section 23 (Reader). Except as explicitly
>    > stated otherwise, the syntax used throughout this document is
>    > standard syntax.

> An conforming implementation has to support the standard syntax.

Correct.

> http://www.lispworks.com/reference/HyperSpec/Body/02_aa.htm
>  > Syntax information for use by the Lisp reader is embodied in an
>  > object called a readtable. Among other things, the readtable
>  > contains the association between characters and syntax types.

> The readtable embodies the syntax information for the Lisp reader.

The readtable embodies *some* of the syntax information
for the Lisp reader. The spec doesn't say, nor does it
mean, that *everything* about Lisp syntax is determined
by the readtable.

I think this is where you have gone astray.

They are, yes.

> The standard-syntax must be modifyable by change of the readtable:
> http://www.lispworks.com/reference/HyperSpec/Body/t_rdtabl.htm#readtable

It must. This doesn't mean that every syntactic change you
can think of must be achievable by readtable modifications
alone. (The page you reference doesn't say anything like that.)

[SNIP: you aren't allowed to change the standard readtable;
correct.]

> But the following is not only *allowed*.

> A conforming CommonLisp implementation *must* execute:

[SNIP: set-syntax-from-char twice in a new readtable;
Ilias claims it must do as he says]

*** STOP SKIPPING HERE

You haven't really explained why you think that the reader macro
function for #\(, when you've associated it with #\{ using
SET-SYNTAX-FROM-CHAR, needs to start looking for #\} instead
of #\). I conjecture that your argument goes like this:

  1 Syntax is modified using the readtable.
  2 Therefore, everything about a character's role
    in Lisp syntax must change when you change its
    entry in the readtable.
  3 Therefore, after (SET-SYNTAX-FROM-CHAR #\} #\)),
    #\} must behave exactly as #\) used to, including
    being accepted as a list-closer for #\( or -- if
    you've copied its syntax to #\{ -- for #\{.

The incorrect step is #2. It is not required that
everything about a character's role in Lisp syntax
must change when you change its entry in the readtable.

The readtable controls three things about a character.
  - Its syntax type. (See section 2.1.4.)
  - Its reader macro function, if any.
  - What should be done with its case when parsing symbols.
    (This one isn't settable character-by-character.)

These three things do not determine whether that character
is acceptable as a terminator for a list begun with #\(,
or with #\{, or with anything else.

A conforming Lisp implementation is allowed to use the
readtable for other purposes too. Apparently LispWorks
uses it to decide what characters are acceptable list
terminators in the reader macro function for #\(. That's
permitted by the spec, but it isn't required by the spec.

> Xanalys LispWorks: OK
> Franz Allegro    : fails
> Corman Lisp      : fails

Allegro and Corman Lisp don't "fail" on this point.
They merely don't do what you expect. If they don't
recognize #\} as a list terminator after the code
you described, they are fully within their rights.

--
Gareth McCaughan  Gareth.McCaug...@pobox.com
.sig under construc


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Erik Naggum  
View profile  
 More options Sep 3 2002, 3:52 pm
Newsgroups: comp.lang.lisp
From: Erik Naggum <e...@naggum.no>
Date: 03 Sep 2002 19:52:19 +0000
Local: Tues, Sep 3 2002 3:52 pm
Subject: Re: LISP - The Scary Readtable - () => {}
* Fred Gilham
|     (do ((firstchar (flush-whitespace stream) (flush-whitespace stream)))

  Note that `flush-whitespaceŽ may be portably done with (peek-char t stream).

--
Erik Naggum, Oslo, Norway

Act from reason, and failure makes you rethink and study harder.
Act from faith, and failure makes you blame someone and push harder.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Frank A. Adrian  
View profile  
 More options Sep 3 2002, 11:06 pm
Newsgroups: comp.lang.lisp
From: "Frank A. Adrian" <fadr...@ancar.org>
Date: Tue, 03 Sep 2002 20:06:26 -0700
Local: Tues, Sep 3 2002 11:06 pm
Subject: Re: LISP - The Scary Readtable - () => {}

Fred Gilham wrote:
> If you decide to modify this code, you'd have to do similar things for
> Allegro Common Lisp and other Lisps that don't have the behavior you
> want --- and you may not have access to the source code to do the
> modification.

Which, BTW, you can do in CLISP and Corman Lisp because the source code is
available for each.

faa


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
ilias  
View profile  
 More options Sep 5 2002, 8:23 am
Newsgroups: comp.lang.lisp
From: ilias <at_n...@pontos.net>
Date: Thu, 05 Sep 2002 15:26:50 +0300
Local: Thurs, Sep 5 2002 8:26 am
Subject: Re: LISP - The Scary Readtable - () => {}

Fred Gilham wrote:
> ilias wrote:
>>Matthew Danish wrote:
>>>>the call (set-syntax-of-char #\{ #\( ) is conforming,

>>>>but the resulting form: {a b c) is not!

>>>It is not the resulting form. (technicality)
>>>But you can now type {a b c) in and obtain similar behavior to
>>>(a b c).

>>you are right. i'll change this.

> You can't (not the way you're trying to do it).

no. here i mean't the article. in V0.2 i've clarified, that it is a
possible form.

> The standard allows a conforming implementation to look for the
> close-paren character.

yes, i know this. The main problem.

> You'll have to re-write code in the lisp
> reader.

> Here's the code for read-list, which is what the CMUCL reader uses as
> the reader macro function for #\(

> (defun read-list (stream ignore)
...
> (setq listtail listobj))))))

will look at the full code at later time.

for now to complex.

> You'll notice that the do loop has the following end test:

>      (char= firstchar #\) )

yes. clearly a char.

> This is a hard-coded comparison to the right parenthesis character.
> Thus you can't make the CMUCL reader accept something other than
> right-parenthesis as the closing list delimiter without modifying this
> code.

clear.

> This is conforming behavior, as has already been pointed out.

maybe. still working on it.

> If you decide to modify this code, you'd have to do similar things for
> Allegro Common Lisp and other Lisps that don't have the behavior you
> want --- and you may not have access to the source code to do the
> modification.

will try with CL functions or own code.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
ilias  
View profile  
 More options Sep 5 2002, 1:08 pm
Newsgroups: comp.lang.lisp
From: ilias <at_n...@pontos.net>
Date: Thu, 05 Sep 2002 20:15:50 +0300
Local: Thurs, Sep 5 2002 1:15 pm
Subject: Re: LISP - The Scary Readtable - () => {}

OK.

OK. will change!

>>http://www.lispworks.com/reference/HyperSpec/Body/02_db.htm
>> > The right-parenthesis is invalid except when used in conjunction with
>> > the left parenthesis character. For more information, see Section 2.2
>> > (Reader Algorithm).

>>the call (set-syntax-of-char #\{ #\( ) is conforming,

>>but the resulting form: {a b c) is not!

> That is not a form. It's a string of characters.

OK. will change!

> "{a b c)" may be interpreted as denoting a list
> by the Lisp reader after you do (set-syntax-from-char #\{ #\(),
> and I think that's perfectly legal. The statement that #\)
> is "invalid" except after #\( describes a CL implementation
> in its initial state; you can change that state.

ok.
I should state that i refere to standardsyntax at top of the document.

>>but after the second conforming call
>>(set-syntax-of-char #\} #\) )

>>{a b c}
>>becomes valid...

> That's your claim. It is not supported by the spec.

yes, my claim.

>>Someone may says, here is a weak point in the proof:

>>The implementor may don't use the reader-macro-function of ')' but to
>>compare directly the char retrieved via read-char.

> And you have correctly identified the way in which
> your claim is wrong :-).

I wanted to focus the attention of the readers to this point.

this is a so called "Sollbruchstelle" (cannot find english term: in
mechanical engeneering, where a part should break if it breaks).

OK

>>http://www.lispworks.com/reference/HyperSpec/Body/02_aa.htm
>> > Syntax information for use by the Lisp reader is embodied in an
>> > object called a readtable. Among other things, the readtable
>> > contains the association between characters and syntax types.

>>The readtable embodies the syntax information for the Lisp reader.

> The readtable embodies *some* of the syntax information
> for the Lisp reader. The spec doesn't say, nor does it
> mean, that *everything* about Lisp syntax is determined
> by the readtable.

> I think this is where you have gone astray.

intuition: it has too, but cannot explain (yet).
we'll see how i change.

OK

 >>The standard-syntax must be modifyable by change of the readtable:
 >>http://www.lispworks.com/reference/HyperSpec/Body/t_rdtabl.htm#readtable
 >
 > It must. This doesn't mean that every syntactic change you
 > can think of must be achievable by readtable modifications
 > alone. (The page you reference doesn't say anything like that.)
yes, wrong link.
will correct.

> [SNIP: you aren't allowed to change the standard readtable;
> correct.]

OK

not exactly this line.

> The incorrect step is #2. It is not required that
> everything about a character's role in Lisp syntax
> must change when you change its entry in the readtable.

point 2, not *everything*.
(eql #\) #\} ) => nil

> The readtable controls three things about a character.
>   - Its syntax type. (See section 2.1.4.)
>   - Its reader macro function, if any.
>   - What should be done with its case when parsing symbols.
>     (This one isn't settable character-by-character.)

everything a reader needs.

> These three things do not determine whether that character
> is acceptable as a terminator for a list begun with #\(,
> or with #\{, or with anything else.

this *seems* correct.

> A conforming Lisp implementation is allowed to use the
> readtable for other purposes too. Apparently LispWorks
> uses it to decide what characters are acceptable list
> terminators in the reader macro function for #\(. That's
> permitted by the spec, but it isn't required by the spec.

OK

>>Xanalys LispWorks: OK
>>Franz Allegro    : fails
>>Corman Lisp      : fails

> Allegro and Corman Lisp don't "fail" on this point.
> They merely don't do what you expect. If they don't
> recognize #\} as a list terminator after the code
> you described, they are fully within their rights.

'within their rights'
sounds ok.

many thanks for this thoroughly attack.

i'll rewrite the document now.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Messages 1 - 25 of 27   Newer >
« Back to Discussions « Newer topic     Older topic »