From: Ron Garret on
In article <m3aazsjedg.fsf(a)moon.robolove.meer.net>,
Madhu <enometh(a)meer.net> wrote:

> [spellchecked version, in case spelling was important to tfb, I really
> do not wish to follow up as I believe all the points have been made]
>
> * Don Geddis <87pr8ofe4i.fsf(a)geddis.org> :
> Wrote on Thu, 15 Oct 2009 16:09:49 -0700:
>
> | I think your parenthetical comment is false: you underestimate the
> | ingenuity and stubborness of your fellow humans! :-)
> |
> | While any REASONABLE person would realize that's an obvious typo,
> | nonetheless these language lawyer arguments can get very bitter. And
> | the fact remains that the official ANSI spec has very clear language,
> | which requires a behavior that is violated by every CL implementation
> | that I know of.
>
> If you notice the issues in question, you will see you are making a
> false analogy with intent to mislead, and to portray me as stubborn and
> stupid follower of the word of the spec, ignoring its intentions. I
> resent that

If the shoe fits...

The problem with DEFSTRUCT is just as obvious as the problem with PROG2.

And everyone is apparently able to see it except you (and maybe Kenny).

> The question around defstruct remains because what the spec describes is
> how a DEFSTRUCT (FOO :INCLUDE BAR) constructs a
>
> MAKE-FOO (&KEY (SLOT1 SLOT1-INITFORM) (SLOT2 SLOT2-INITFORM))
>
> form, which refers to the constructor for FOO. This is then compiled in
> the lexical context of the defstruct macro. This is the conceptual
> model based (I believe on Alan Bawden's implementation).

No, that is not what the spec describes. That is ONE POSSIBLE
INTERPRETATION of what the spec describes. The spec is AMBIGUOUS.

> Note macros in lisp are not hygienic.

That's right. But this is widely recognized to be a problem, not a
feature. That problem is solved in CL by making it a Lisp2 and adding
packages. But solving a problem doesn't mean it wasn't a problem.

> It is reasonable in the context
> of Common Lisp to assume that the lexical context in which this entire
> form is assembled and compiled is in the _lexical context_ of this
> macro.

It is reasonable to suppose that this is one interpretation. It is not
reasonable to suppose that this is the only possible interpretation,
which is the position you were taking.

Even now you are trying to defend it as a good design. It isn't. Even
the person who originated it says so.

> Alan Bawden's original implementation (which the Specification is based
> on) is a sound implementation of this model.

So Alan once produced a sound implementation of a bad design. And your
point would be...?

rg
From: Tamas K Papp on
On Thu, 15 Oct 2009 16:09:49 -0700, Don Geddis wrote:

> Tamas K Papp <tkpapp(a)gmail.com> wrote on 15 Oct 2009 18:3:
>> On Thu, 15 Oct 2009 19:20:30 +0100, Tim Bradshaw wrote:
>>> On 2009-10-15 08:41:53 +0100, Tamas K Papp <tkpapp(a)gmail.com> said:
>>>> How is prog2 wrong?
>> But it is pretty clear that this is an unintented mistake, and there is
>> no ambiguity (no one would seriously suggest that (prog2 1 2 3) => 2 is
>> non-conforming).
>
> I think your parenthetical comment is false: you underestimate the
> ingenuity and stubborness of your fellow humans! :-)
>
> While any REASONABLE person would realize that's an obvious typo,
> nonetheless these language lawyer arguments can get very bitter. And
> the fact remains that the official ANSI spec has very clear language,
> which requires a behavior that is violated by every CL implementation
> that I know of.
>
> Alas, people are not always reasonable.

Talking of lawyers (and other participants of the legal system): they
have developed ways of coping with ambiguity in laws. When
encountering ambiguity, one possibility is to try to reconstruct "the
intent of the lawmaker". [1] So I think that whenever we encounter an
ambiguity or a typo in the standard, it would be good to argue for
what fits best into the logic of the rest of CL, then write up a CDR
about it and settle the issue.

Tamas

[1] http://en.wikipedia.org/wiki/Judicial_interpretation
From: Madhu on
* Alan Bawden <w2d7huvykv4.fsf(a)shaggy.csail.mit.edu> :
Wrote on 16 Oct 2009 01:21:35 -0400:

|> ...
|> Alan Bawden's original implementation (which the Specification is based
|> on) is a sound implementation of this model...
|
| I believe you are misinterpreting what I said. My original
| implementation was not a sound implementation of -any- interpretation
| of the current specification. It was even more broken than the broken
| interpretation you seem to favor. My point was that the committee was
| clearly aiming to -fix- the problem with initform scope, and certainly
| intended to fix it completely -- not halfway.

OK! I stand humbled :)

I am not really in favour of the "broken interpretation", but also
believe the "broken interpretation" is consistent with the model which
the defstruct specification describes: that of creating a constructor
where the initform FORM becomes the default VALUE of the keyword
argument.

I interpreted your earlier post as stating that this model, of how
defstruct behaves, originated in your implementation.

The "broken interpretation" also seems (to me) to be consistent with how
defmacro is defined to behave were it to be used in implementing such a
model.

--
Madhu
From: Madhu on

* Tamas K Papp <7jqli2F36hlf6U1(a)mid.individual.net> :
Wrote on 16 Oct 2009 07:26:58 GMT:

| Talking of lawyers (and other participants of the legal system): they
| have developed ways of coping with ambiguity in laws. When
| encountering ambiguity, one possibility is to try to reconstruct "the
| intent of the lawmaker". [1] So I think that whenever we encounter an
| ambiguity or a typo in the standard, it would be good to argue for
| what fits best into the logic of the rest of CL, then write up a CDR
| about it and settle the issue.

Judging by the show of hands on this issue, it looks like the `next CL'
will lack dual namespaces, have no defmacro, have a READer which works
on text strings, etc., as these are all obvious bugs in the CL
specification which would need to be fixed.

--
Madhu

From: Tamas K Papp on
On Fri, 16 Oct 2009 12:58:53 +0530, Madhu wrote:

> * Tamas K Papp <7jqli2F36hlf6U1(a)mid.individual.net> : Wrote on 16 Oct
> 2009 07:26:58 GMT:
>
> | Talking of lawyers (and other participants of the legal system): they
> | have developed ways of coping with ambiguity in laws. When |
> encountering ambiguity, one possibility is to try to reconstruct "the |
> intent of the lawmaker". [1] So I think that whenever we encounter an |
> ambiguity or a typo in the standard, it would be good to argue for |
> what fits best into the logic of the rest of CL, then write up a CDR |
> about it and settle the issue.
>
> Judging by the show of hands on this issue, it looks like the `next CL'
> will lack dual namespaces, have no defmacro, have a READer which works
> on text strings, etc., as these are all obvious bugs in the CL
> specification which would need to be fixed.

Perhaps you are reading some other forum? I don't really get that
impression.

Besides, I was talking about fixing ambiguities in the standard. How
do, for example, dual namespaces and macros count as ambiguous?

Tamas