Hi, <br><br>something I seem to often do is use list as structures, (and have lists of these)<br><br>eg<br><br>#lang scheme<br>(define&nbsp; people &#39;((&quot;Guy&quot; 40 man) (&quot;Maddona&quot; 50 woman)))<br><br>I am often doing something like;<br>
<br>
(map (λ (person) <br>(let ((name (car person))<br>&nbsp; &nbsp; &nbsp; &nbsp; (age (car person))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (gender (car person)))&nbsp; <br>&nbsp;&nbsp; (blah-fn  name age gender)<br>&nbsp;) people)<br>

<br>I could, but don&#39;t often, do (map (λ (name age gender) (blah-fn  name age gender) ) (map car people) (map cadr people) (map caddr people))<br>
<br>I realise this is a bit rubbish and have thought of a better way; <br><br>(map (λ (person) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (let-values ([(name age gender)&nbsp; (apply values person)])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (blah-fn name age gender)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )) people)<br>
<br>I sort of suspect that a macro might be the ticket - like; <br><br><br>(define-syntax-rule (lambda-apply-values-person1 values-list blah-fn x y z)<br>&nbsp; (λ (values-list)<br>&nbsp;&nbsp;&nbsp; (let-values ([(x y z)&nbsp; (apply values values-list)])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (blah-fn x y z)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )))<br><br>(map (lambda-apply-values-person1 person (lambda args (display args)) x y z)&nbsp; people)<br><br>which works but doesn&#39;t handle multiple identifiers; <br><br>(define-syntax lambda-apply-values-person2<br>
&nbsp; (syntax-rules ()<br>&nbsp;&nbsp;&nbsp; (lambda-apply-values-person2 values-list ...)<br>&nbsp;&nbsp;&nbsp; (λ (values-list)&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (let-values ([(...)&nbsp; (apply values values-list)])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (list ...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ))))<br>of course this doesn&#39;t work. I suspect I can&#39;t do this with syntax-rules and need to look at syntax-case and the syntax form.<br>
<br>Because I do this all the time I&#39;m sure that others have a better way. What do you do?<br><br>Cheers,<br><br>Stephen<br><br><br>