Peter Kourzanov <peter.kourzanov@x> writes: > Jim, > > I would like to know why (case) is excluded from this proposal. I did not include case for two reasons: a.) existing match libraries do not have an analogue of case b.) RNRS case's syntax does not lend itself to extending to the pattern matching case in an upwardly compatible manner. In particular, case compares values with eqv? and performs no binding, while lambda and the let forms are all binding forms (and compare with equal? in the pattern-matching versions). This means that making case destructure its arguments would change the meaning of existing valid code, at least for non-list, non-vector patterns: (case 'a ((a) (list a)) (else #f)) ==> (3) Neither of these is necessarily compelling, but I think both argue that adding pattern matching support to case is more intrusive than adding it only to the environment-constructing forms. On the other hand, the (match ...) form of (rnrs match) can be used in a manner similar to (case ...), but with no compatibility concerns for existing code. Thoughts? -- Jim Wise jwise@x
Attachment:
pgppkT7pgB2B8.pgp
Description: PGP signature
_______________________________________________ Scheme-reports mailing list Scheme-reports@x http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports