Thank you all for you advice. You helped to set me on the track. But it is indeed a rather difficult read for me. My head dizzles is still a bit dizzling. Below are my very first steps in C: a version of `find-if' as a starter. I'd appreciate any comment. (Did I miss something important, for example?) One thing that I noticed is that my `find-if' causes an infinite loop, when applied to a recursive (?) list, à la: (setq my-list (list 'alpha 'beta 'gamma)) (setcdr (cddr my-list) my-list) (find-if (lambda (elt) (eq elt 'zeta)) my-list) I couldn't think of a remedy for this. How could I solve this problem? OTOH this happens to `copy-sequence', too. So maybe this is o.k.?