| N° | Fonction | Catégorie | Version |
|---|---|---|---|
| BIL 22 | BiL_DelIfNot | Gestion des Listes | 1.0 - Janvier 2007 |
| But | Retire les éléments d’une liste qui ne satisfont pas à une condition. |
| Prototype | (BiL_DelIfNot Condition Liste) |
| Argument | Condition - La fonction de condition - fonction - Liste - La liste à traiter - Liste - |
| Retours | La liste modifiée ou non |
| Var. globales | Néant |
| Description | Retourne une liste en conservant les éléments qui satisfont à une condition |
| Notes | La fonction de condition ne doit comporter qu’un seul argument. Contrairement à BiL_DelIf, ne pas mettre la fonction de condition sous quote. |
| Exemples |
Command: (BiL_DelIfNot zerop '(0 1 2 3 4 5 6 0 7 8))
retourne (0 0)
(zerop vérifie si un élément est égal à 0)
Command: (BiL_DelIfNot numberp '(0 1 2 (1 2) "az" (4 "a")))
retourne (0 1 2)
(numberp vérifie si un élément est un nombre réel ou entier)
Nota (1 2) n’est pas retourné parce que c’est une liste.
Command: (BiL_DelIfNot listp '(0 1 2 (1 2) "az" (4 "a")))
retourne ((1 2) (4 "a"))
(listp vérifie si un élément est une liste)
Et si on crée une nouvelle fonction personnalisée telle que :
Command: (defun stringp (*str)(= (type *str) 'STR))
On pourra ne conserver que les chaînes d’une liste :
Command: (BiL_DelIfNot stringp '(1 2 ("a" "b") "c" 3 "d"))
qui retourne ("c" "d")
Nota ("a" "b") n’est pas retourné parce que c’est une liste.
|
1- (defun BiL_DelIfNot (*fct *List1) 2- (apply 3- 'append (mapcar '(lambda(elm) 4- (if(*fct elm) 5- (list elm) 6- ) 7- ) 8- *List1) 9- ) 10- ) 11- )
Ligne 3 : Pour chaque élément de *List1, ajoute à la liste de retour, Ligne 4: - Si la fonction de condition est vraie Ligne 5: - l’élément en question Ligne 6: - sinon rien.