help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: condition-case


From: Stefan Monnier
Subject: Re: condition-case
Date: Thu, 16 Dec 2010 17:03:26 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

> OK, so would it work as:

> (defmacro handler-case (expression &rest clauses)
>   "Evaluate expression with `condition-case' and catch errors with CLAUSES.

> Longer explanation here..."
>   (let* ((var (gensym))
>          (neclause (assoc :NO-ERROR clauses))
>          (nell     (cadr neclause))
>          (nebody   (cddr neclause))
>          (handlers (mapcar (lambda (clause)
>                              (let ((typespec (car clause))
>                                    (clausvar (cadr clause))
>                                    (body     (cddr clause)))
>                                (cons (if (and (consp typespec)
>                                               (eq 'or (car typespec)))
>                                          (cdr typespec)
>                                        typespec)
>                                      (if (null clausvar)
>                                          body
>                                        (let ((var (car clausvar)))
>                                          body)))))

You need backquotes around the let.

> Does that new `let' that pops the clause need to evaluated?  And should
> it maybe be a `lexical-let'?

Whether it should be lexical or not is up to you.


        Stefan


reply via email to

[Prev in Thread] Current Thread [Next in Thread]