[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Scheme-reports] Legacy caar to cddddr
Am 22.10.2011 19:55, schrieb John Cowan:
> Andre van Tonder scripsit:
>> (define-syntax do
>> (lambda (exp r c)
>> (or (and (pair? (cdr exp))
>> (pair? (cddr exp)))
>> (let ((specs (cadr exp))
>> (end (caddr exp))
>> (body (cdddr exp))
>> (loop (syntax loop)))
> It's not obvious why this is better than pattern-matching, though.
Also, a destructuring let form would be a much better solution. For
instance, in Clojure you can write something like:
(let [[_ specs end & body] exp]
We could have something similar in WG2:
(let (((_ specs end . body) exp))
Even better, we could also have an "if-let" form whose execution path
depends on whether the destructuring is possible:
(if-let (((_ specs end . body) exp))
Such destructuring forms would remove most reasons for having cadr etc.
in the standard.
Scheme-reports mailing list