I corrected it to your advice accordingly. (defmethod output-files ((operation compile-op) (component foo-file)) (multiple-value-bind (pathnames translatep) (call-next-method) (values (mapcar #'(lambda (p) (make-pathname* :directory (append (pathname-directory p) (list (cond ((featurep :foo1.0) "1.0") ((featurep :foo1.1) "1.1") (t (error "No foo feature found."))))) :defaults p)) pathnames) translatep)))
On Sat, 2013-11-16 at 17:34 -0500, Faré wrote: > On Sat, Nov 16, 2013 at 5:21 PM, FAU <f...@riseup.net> wrote: > > (defmethod output-files ((operation compile-op) (component foo-file)) > > (let ((l (multiple-value-list (call-next-method)))) > > (apply #'values (mapcar #'(lambda (p) > > (make-pathname* :directory (append (pathname-directory p) (list # > > +foo1.0 "1.0" #+foo1.1 "1.1")) :defaults p)) > > (car l)) > > (cdr l)))) > > > Inasmuch as I think that runtime conditionals should be used rather than > compile-time conditionals wherever performance permits (see also featurep), > your general scheme is valid. However, you can should be using > (multiple-value-bind (pathnames translatedp) ... > (values ...)) > There are only two values returned in this protocol. > > —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org > When my contradictors' ideas aren't an incoherent mess I can easily disprove, > I call them for the ideologists they are; but they are so dogmatic, > they don't change their mind after I insult them. >