Subject: Re: prog@
From: Erik Naggum <erik@naggum.no>
Date: 14 Nov 2002 18:58:52 +0000
Newsgroups: comp.lang.lisp
Message-ID: <3246289132162826@naggum.no>

* Pascal Costanza <costanza@web.de>
| Thanks for your comments. Well, I have seen the following idiom.
| 
| (defmethod m :around (...)
|    (multiple-value-prog1
|      (progn
|        (...)
|        (call-next-method))
|      (...)))
| 
| I find this rather ugly. So what I want to have is something like that.
| 
| (defmethod m :around (...)
|     (prog@
|        (...)
|        @(call-next-method)
|        (...)))
| 
| I think this is somewhat nicer. However, you have to admit that this calls
| for generalization. ;-)

(defmethod m :around (...)
  (...)
  (multiple-value-prog1
   (call-next-method)
   (...)))

  I fail to see the problem.  Elsewhere, a simple `let´ form that captures
  the value and returning is value at the end seems to do a much better job
  at this:

(...)
(let (($ ...))
  (... $ ...)
  $)

  If your value has no natural name, using a symbol like $ should be OK,
  but you should really think of a good name for the value if it is used
  elsewhere in the function.

-- 
Erik Naggum, Oslo, Norway

Act from reason, and failure makes you rethink and study harder.
Act from faith, and failure makes you blame someone and push harder.