[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
mapcar
Date: Mon, 4 Mar 91 10:59:36 -0700
From: drstrip@gnome.cs.sandia.gov (David R. Strip)
Message-Id: <9103041759.AA05430@gnome.local>
To: slug@ai.sri.com
Subject: mapcar and values interaction
Status: RWhy does (mapcar #'(lambda (x) (values)) '(1 2 3)) eval to
(nil nil nil) and not ()?
In general, how do you write a function for use in a mapcar so that
it may or may not contribute to the resulting list?
Mapcar returns 1 value for each pass. So mapcarring over the list '(1 2 3)
with a function of (values) returns 3 empty values, or (nil nil nil).
To avoid this, you could use something like remove-if-not to take all the
empties out after the mapcar is done. Or, you could use something like MAPC
or DOLIST to push only the values you want onto a variable (like all values
that aren't nil).
I think by the definition of mapcar, everything will contribute a value to the
returned list, be it nil or not.
... Rick