On Sun, Sep 8, 2013 at 11:20 PM, Joseph Wayne Norton <
[email protected]> wrote:

>
> Hello.
>
> For R7RS final draft, the syntax-rules for the case derived expression
> appears to be incorrect.  The order of the 4th <syntax rule> is incorrect.
>
> The 4th <syntax rule> should be moved after the 5th <syntax rule> .  If
> not, the *result1* pattern variable of the 4th <syntax rule> will
> incorrectly match with an *=>* in the input.
>

Thanks Joseph, you are correct.  We'll add this to the errata,
and I'll also add a case for this to the R7RS test suite, which
is currently only checking => for else clauses.


>
> Best regards,
>
> Joe N.
>
>
> p.s. Here is a corrected version:
>
>  (define-syntax case
>    (syntax-rules (else =>)
>      ((case (key ...)
>         clauses ...)
>       (let ((atom-key (key ...)))
>         (case atom-key clauses ...)))
>      ((case key
>         (else => result))
>       (result key))
>      ((case key
>         (else result1 result2 ...))
>       (begin result1 result2 ...))
>      ((case key
> -       ((atoms ...) result1 result2 ...))
> -     (if (memv key '(atoms ...))
> -         (begin result1 result2 ...)))
> -    ((case key
>         ((atoms ...) => result))
>       (if (memv key '(atoms ...))
>           (result key)))
>      ((case key
>         ((atoms ...) => result)
>         clause clauses ...)
>       (if (memv key '(atoms ...))
>           (result key)
>           (case key clause clauses ...)))
>      ((case key
> +       ((atoms ...) result1 result2 ...))
> +     (if (memv key '(atoms ...))
> +         (begin result1 result2 ...)))
> +    ((case key
>         ((atoms ...) result1 result2 ...)
>         clause clauses ...)
>       (if (memv key '(atoms ...))
>           (begin result1 result2 ...)
>           (case key clause clauses ...)))))
>
> _______________________________________________
> Scheme-reports mailing list
> [email protected]
> http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
>
>
_______________________________________________
Scheme-reports mailing list
[email protected]
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports

Reply via email to