wie in lisp defun durch setf ersetzen?

02/11/2007 - 18:48 von Hermann Riemann | Report spam
Ich möchte mir meine Funktionen statt von Hand
per Programm zusammenbauen.

(defun add0 (x) (+ 1 x))
liefert ADD0

(setf add1 (list (list 'x) (list '+ 1 'x)))
liefert ((X) (+ 1 X))

(add0 1)
liefert 2

Aber wie mach ich das, was ich mit add0 gemacht habe,
wenn das mit add1 machen möchte?
Sowas wie (??? add1 ??? 1 ??? )

Hermann
der im Buch ANSI Common lisp von Paul Graham
keine Lösung zu diesem Problem gefunden hat.

http://www.Hermann-Riemann.de
 

Lesen sie die antworten

#1 Rainer Weikusat
02/11/2007 - 19:00 | Warnen spam
Hermann Riemann writes:
(setf add1 (list (list 'x) (list '+ 1 'x)))
liefert ((X) (+ 1 X))

(add0 1)
liefert 2

Aber wie mach ich das, was ich mit add0 gemacht habe,
wenn das mit add1 machen möchte?
Sowas wie (??? add1 ??? 1 ??? )



Ich bin mir jetzt nicht vollkommen sicher, Dich richtig verstanden zu
haben, und meine LISP-Kenntnisse sind mehr als eingerostet, aber

(setf (symbol-function 'add1) (lambda (x) (+ x 1)))

?

Ähnliche fragen