gile Posté(e) le 23 avril 2005 Posté(e) le 23 avril 2005 Avant de découvrir qu'elles exitaient en vlisp, j'ai trouvé certaines fonction équivalentes dans la FAQ Autolisp de Reini Urban (CF le site @CAD+, je ne sais pas faire de lien) et pour essayer de comprendre ce qu'est la récursivité, j'en ai commis moi même quelques que je livre ici si çà peut intéressser des utilisateurs qui n'ont pas accés à vlisp (intellicad ,...) Les deux premières sont définies de deux façons : itérative et récursive.Les deux dernières sont piquées à la FAQ AutoLISP et nécessaire aux précédentes. ;;; Évalue si au moins un des membres d'une liste retourne T comme résultat à l'exécution d'une fonction;;; (SOME 'minusp '(10 20 -50)) -> T;;; En vlisp -> vl-some;;;;;; Façon itérative : (defun SOME (fun lst) (and (consp lst) (member T (mapcar fun lst)) )) ;;; Ou façon récursive : (defun SOME (fun lst) (cond ((null lst) nil) ((apply fun (list (car lst))) T) (T (SOME fun (cdr lst))) )) ;;; Vérifie si tous les membres d'une liste retournent T comme résultat à l'exécution d'une fonction;;; (EVERY numberp '(10 5.5 0)) -> T;;; En vlisp -> vl-every;;;;;; Façon itérative : (defun EVERY (fun lst) (and (consp lst) (apply '= (cons T (mapcar fun lst))) )) ;;; Façon récursive : (defun EVERY (fun lst) (cond ((null lst) nil) ((null (cdr lst)) (apply fun (list (car lst)))) ((apply fun (list (car lst))) (EVERY fun (cdr lst))) )) ;;; REMOVE_DOUBLES - Suprime tous les doublons d'une liste (defun REMOVE_DOUBLES (lst) (cond ((atom lst) lst) (T (cons (car lst) (REMOVE_DOUBLES (remove (car lst) lst))) ) )) ;;; une liste non vide ?;;; En vlisp -> vl-consp (defun consp (x) (and x (listp x))) ;;; Enlève un article d'une liste (les éléments en doubles sont permis);;; (remove 0 '(0 1 2 3 0)) -> (1 2 3);;; En vlisp -> vl-remove (defun remove (ele lst) (apply 'append (subst nil (list ele) (mapcar 'list lst))))
gile Posté(e) le 2 mai 2005 Auteur Posté(e) le 2 mai 2005 Voici le lien vers la FAQ AutoLISP de reini Urban (traduite en français). J'y ai trouvé énormément de chose qui m'ont permis d'apprendre ce que je connais en LISP aujoud'hui.
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant