Appeler une fonction en paramètre d'un mapcar lambda
Bonjour,
J'essaie d’exécuter ma fonction :
Code:
(defun newopen2 (felem lop) (mapcar '(lambda (y) ((eval y) felem)) lop))
Code:
(newopen2 '(1 2 3) '(g1 g2 g3 m1 m2 m3 p1 p2 p3))
Avec g1 g2 g3 etc :
Code:
1 2 3 4 5 6 7 8 9
| (defun g1 (l) (if (eq (car l) 1) NIL (cons 1(cdr l))))
(defun g2 (l) (if (eq (car l) 2) NIL (cons 2(cdr l))))
(defun g3 (l) (if (eq (car l) 3) NIL (cons 3(cdr l))))
(defun m1 (l) (if (eq (car l) 1) NIL (if (eq (cadr l) 1) NIL (if (eq (car l) (cadr l)) NIL (cons (car l) (cons 1 (cddr l)))))))
(defun m2 (l) (if (eq (car l) 2) NIL (if (eq (cadr l) 2) NIL (if (eq (car l) (cadr l)) NIL (cons (car l) (cons 2 (cddr l)))))))
(defun m3 (l) (if (eq (car l) 3) NIL (if (eq (cadr l) 3) NIL (if (eq (car l) (cadr l)) NIL (cons (car l) (cons 3 (cddr l)))))))
(defun p1 (l) (if (eq (car l) 1) NIL (if (eq (caddr l) 1) NIL (if (eq (car l) (caddr l)) NIL (if (eq (cadr l) (caddr l)) NIL (append (list(car l)) (list(cadr l)) (cons 1 ())))))))
(defun p2 (l) (if (eq (car l) 2) NIL (if (eq (caddr l) 2) NIL (if (eq (car l) (caddr l)) NIL (if (eq (cadr l) (caddr l)) NIL (append (list(car l)) (list(cadr l)) (cons 2 ())))))))
(defun p3 (l) (if (eq (car l) 3) NIL (if (eq (caddr l) 3) NIL (if (eq (car l) (caddr l)) NIL (if (eq (cadr l) (caddr l)) NIL (append (list(car l)) (list(cadr l)) (cons 3 ()))))))) |
Seulement j'ai une erreur : Argument to apply/funcall is not a function: (LAMBDA (Y) ((EVAL Y) FELEM)).
Comment résoudre ce problème ?
Merci d'avance !