Bonjour,
je suis nouveau en lisp et je ne comprends pas ce que fait cette fonction en lisp ?
Code:
1
2
3
4
5 (defun fct (liste1 liste2 liste3) (cond ((eval liste1) (eval liste2) (fct liste1 liste2 liste3)) (t (eval liste3))) )
Merci d'avance.
Version imprimable
Bonjour,
je suis nouveau en lisp et je ne comprends pas ce que fait cette fonction en lisp ?
Code:
1
2
3
4
5 (defun fct (liste1 liste2 liste3) (cond ((eval liste1) (eval liste2) (fct liste1 liste2 liste3)) (t (eval liste3))) )
Merci d'avance.
COND est l’operateur de branchement. Il peut avoir un nombre quelconque de
branches, chaque branche entre parenthèses comme ça:
ou chaque condition peut être suivie par un nombre quelconque de formes àCode:
1
2
3
4 (cond (condition1 ...) (condition2 ...) ... (condition_n ...))
évaluer. COND évalue les conditions jusqu’à ce qu’il en trouve une vraie, et
ensuit il évalue les formes du branche correspondant et retourne la valeur de
la dernière forme. Si toutes les conditions sont fausses, COND returne NIL.
D’habitude, on commence le branche « else » par T, la valeur vraie par excellence.
Ici COND n’a que deux branches. Il appique la fonction EVAL à LISTE1 et si le
résultat est vrai, la même fonction est appiquée à LISTE2 et ensuit, la
fonction est appellée encore une fois. Autrement, COND (et la fonction)
retourne applique EVAL à LISTE3 et retourne la valeur obtenue, qui devient la
valeur de la fonction.