En tout cas, la récursion n'est pas le moyen typique d'itération en CL. Par exemple, le « Google Common Lisp Style Guide » dit, « You should favor iteration over recursion ».
Cela dit, CL supporte bien les opérations principales de la programmation fonctionnelle: filtration (REMOVE-IF-NOT), mapping (MAP, MAPCAR, etc), filtration+mapping (MAPCAN), folding (REDUCE). En plus, il offre bien d'autres fonctions pratiques comme FIND/FIND-IF, SOME/EVERY/..., COUNT/COUNT-IF, POSITION, etc. Elles acceptent des arguments fonctionnels et aussi sont-elles très générales. Donc, on peut souvent se passer de boucles.
Partager