Wie übergebe ich Argumente zum Zuordnen in Emacs Lisp?

8

Ich möchte eine kleine Funktion schreiben, um einen Wert zu einer Liste hinzuzufügen. Es sieht so aus:

(defvar fares '(31.14 28.12 25.10 22.08 19.06 16.04 13.02 10))

(defun plus-extra (fare) (+ 3.02 fare))

(map 'plus-extra fares)

Ziemlich vorhersehbar, die elisp Barfs, weil die Funktion ein Argument benötigt. Was vermisse ich?

Danke Robert

    
robertpostill 21.05.2011, 13:03
quelle

2 Antworten

16

Die Funktion, die hier nicht genug Argumente hat, ist map , nicht die von Ihnen definierte.

Die Funktion map existiert nicht in Emacs Lisp, sie wird vom Paket cl bereitgestellt. Diese map -Funktion benötigt 3 Argumente, der erste muss der Typ dessen sein, was map zurückgeben soll. Dies:

%Vor%

funktioniert. Aber was du willst ist das:

%Vor%

das ist native elisp.

PS: Vergiss nicht, dass Emacs mit seiner Dokumentation kommt! C-h f Karte RET ; -).

    
p4bl0 21.05.2011, 13:12
quelle
7

Verwenden Sie mapcar , nicht map . Mit mapcar liefert Ihr Beispiel:

%Vor%

Wenn Sie M-x describe-function RET map RET haben, sehen Sie, dass die Signatur von map nicht Ihren Erwartungen entspricht:

%Vor%     
sanityinc 21.05.2011 13:14
quelle

Tags und Links