Ich habe überall für die folgenden Funktionen in Lisp gesucht und nirgends bekommen:Kann ich das in Lisp tun?
den Index etwas in einer Liste finden. Beispiel:
(index-of item InThisList)
etwas an einer bestimmten Stelle in einer Liste ersetzen. Beispiel:
(replace item InThisList AtThisIndex) ;i think this can be done with 'setf'?
geben Sie ein Element an einem bestimmten Index zurück. Beispiel:
(return InThisList ItemAtThisIndex)
Bis zu diesem Punkt, ich habe es mit eigenen Funktionen wurden vorgetäuscht. Ich frage mich, ob ich nur mehr Arbeit für mich selbst erschaffe.
Dies ist, wie ich die Nummer 1 vorgetäuscht worden bin:
(defun my-index (findMe mylist)
(let ((counter 0) (found 1))
(dolist (item mylist)
(cond
((eq item findMe) ;this works because 'eq' checks place in memory,
;and as long as 'findMe' was from the original list, this will work.
(setq found nil)
(found (incf counter))))
counter))
Außerdem ersetzen wir kein Element in einer Liste. Wir kopieren die ersten (r-1) -Elemente und setzen den neuen Wert in r, wobei cdr mit dem (r + 1) -Element verbunden ist - da es sich um Persistenz handelt. – nlucaroni