[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
- Re: condition-case, (continued)
- Re: condition-case, Stefan Monnier, 2010/12/08
- Re: condition-case, Ted Zlatanov, 2010/12/08
- Re: condition-case, Pascal J. Bourguignon, 2010/12/08
- Re: condition-case, Stefan Monnier, 2010/12/09
- Re: condition-case, Ted Zlatanov, 2010/12/10
- Re: condition-case, Stefan Monnier, 2010/12/10
- Re: condition-case, Ted Zlatanov, 2010/12/13
- Re: condition-case, Ted Zlatanov, 2010/12/13
- Re: condition-case, Stefan Monnier, 2010/12/15
- Re: condition-case, Ted Zlatanov, 2010/12/15
- Re: condition-case,
Stefan Monnier <=
- Re: condition-case, Pascal J. Bourguignon, 2010/12/08
- Re: condition-case, Elena, 2010/12/09
- Re: condition-case, Pascal J. Bourguignon, 2010/12/09