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. 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 Scheme-reports@x http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports