LISP lambda fonction
Fermé
hanane93
Messages postés
13
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2005
-
20 nov. 2005 à 13:45
bella - 22 mai 2010 à 23:24
bella - 22 mai 2010 à 23:24
A voir également:
- LISP lambda fonction
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Fonction remplacer word - Guide
- Fonction miroir - Guide
4 réponses
bagnolm
Messages postés
10
Date d'inscription
lundi 6 février 2006
Statut
Membre
Dernière intervention
23 février 2006
4
6 févr. 2006 à 12:05
6 févr. 2006 à 12:05
J'espère que cela répond à ta problématique :
Cette version renvoie le résultat de toutes les lignes
Celle-ci renvoie le résultat de la dernière
N.B: J'utilise CMUCL
www.nodewave.com
Cette version renvoie le résultat de toutes les lignes
(defun test2(x y) ( (LAMBDA (x y) ( values (* x y) (+ x y))) x y))
Celle-ci renvoie le résultat de la dernière
(defun test2(x y) ( (LAMBDA (x y) ( progn (* x y) (+ x y))) x y))
N.B: J'utilise CMUCL
www.nodewave.com
Le problème est que defun est une macro qui utilise déjà elle même LAMBDA. La fonction LAMBDA permet une réécriture d'une expression en changeant les arguments.
Il faut donc faire :
(setq test2
( (LAMBDA (x y)
( values
(* x y)
(+ x y)))
x y))
(test2 1 2)
sera transformé en
(LAMBDA (x y)
( values
(* x y)
(+ x y)))
1 2)
Lui même transformé en
( values
(* 1 2)
(+ 1 2))
en gros, je suis un peu rouillé en lisp ça fait bien 20 ans que je n'en ai pas fait
Il faut donc faire :
(setq test2
( (LAMBDA (x y)
( values
(* x y)
(+ x y)))
x y))
(test2 1 2)
sera transformé en
(LAMBDA (x y)
( values
(* x y)
(+ x y)))
1 2)
Lui même transformé en
( values
(* 1 2)
(+ 1 2))
en gros, je suis un peu rouillé en lisp ça fait bien 20 ans que je n'en ai pas fait
Bonjour à tous,
ya qlq qui peut m'aider de resoudre ce probleme en lisp
transformaer la list (a b c d e) vers ((d . a) b (e c)) en utilisant la lambda fonction
mercie en tous cas
ya qlq qui peut m'aider de resoudre ce probleme en lisp
transformaer la list (a b c d e) vers ((d . a) b (e c)) en utilisant la lambda fonction
mercie en tous cas