Formal spec; implementation; nesting Alpert Herb Petrofsky (11 Jan 2005 21:03 UTC)
Re: Formal spec; implementation; nesting Bradd W. Szonye (11 Jan 2005 21:19 UTC)
Re: Formal spec; implementation; nesting Paul Schlie (11 Jan 2005 22:29 UTC)
Re: Formal spec; implementation; nesting Taylor Campbell (12 Jan 2005 00:10 UTC)
Re: Formal spec; implementation; nesting Bradd W. Szonye (12 Jan 2005 00:13 UTC)
Re: Formal spec; implementation; nesting Bradd W. Szonye (12 Jan 2005 00:16 UTC)
Re: Formal spec; implementation; nesting Paul Schlie (17 Jan 2005 03:03 UTC)
Re: Formal spec; implementation; nesting Alpine Petrofsky (12 Jan 2005 00:22 UTC)
Re: Formal spec; implementation; nesting Paul Schlie (12 Jan 2005 01:45 UTC)
Re: Formal spec; implementation; nesting Paul Schlie (12 Jan 2005 02:18 UTC)
Re: Formal spec; implementation; nesting Paul Schlie (12 Jan 2005 14:11 UTC)
Re: Formal spec; implementation; nesting Paul Schlie (12 Jan 2005 14:29 UTC)

Re: Formal spec; implementation; nesting Paul Schlie 11 Jan 2005 22:29 UTC

(sorry for my delayed response)

> From: Alpert Herb Petrofsky <xxxxxx@petrofsky.org>
>> Date: Mon, 10 Jan 2005 17:14:56 -0500
>> From: Paul Schlie <xxxxxx@comcast.net>
>>
>> So in summary, it would seem that all reader actions invoked by a reader
>> transform token should apply to the following correspondingly processed
>> <s-exp>, implying: (showing only reader actions)
>>
>>  (' ' <s-exp>) :: ({quote {quote <s-exp>}}) => ((quote (quote <s-exp>)))
>>
>>  (#; #; <s-exp>) :: ({remove {remove <s-exp>}}) => ()
>>
>>  (#; ' <s-exp>) :: ({remove {quote <s-exp>}}) => ()
>>
>>  (' #; <s-exp>) :: ({quote {remove <s-exp>}}) => (') ; error, unbound 'quote
>
> Would you agree that these should be equivalent?:
>
>    (' #; a b)
>    ('      b)

- no, just as I wouldn't expect (as it would be wrong):

  (' ' a b) :: ({quote '} a b) => (' b c) :: ({quote b} c) => ((quote b) c)

As clearly to be consistent with the present scope of the 'quote semantic
action applied by the reader, a reader semantic action must be applied to
its following correspondingly processed <s-exp> (right recursive), not prior
to it, yielding:

  (' ' a b) :: ({quote {quote a}} b) => ((quote (quote a)) b)

Therefore by analogy: [presuming (') => <nothing>, as opposed to an error]

  (' #; a b) :: ({quote {remove a}}) => (b)

> How about these?:
>
>    (#; #; a b)
>    (#;      b)

- as above.

> I think what you're missing in your comparison of ' and #; is this:
>
> ' consumes one sexp and produces one sexp.  The resulting sexp can
> then be used as the argument of another '.  In contrast, #; consumes
> one sexp and produces zero sexps.  The resulting nothingness cannot be
> used as the argument to another #; because nothing is not a sexp.

- I simply argue that the scope of the action is determined prior to
  the semantic action, not following it; therefore the outer remove ends
  up being applied to the <s-exp> which has already been removed by it's
  preceding reader semantic action, (just as expression arguments are
  first evaluated prior to the expression/function itself; but after
  the expressions scope and arguments were previously determined.)

Do you really see value in advocating:

(#; #; a #; b c d #; e f) :: ({rem a} {rem b} {rem c} d {rem e} f)

Being more useful than error prone (or simply nasty)?

To me unfortunately, it would seem to be a big mistake.