He estado buscando por todas partes para las siguientes funciones en Lisp, y han llegado a ninguna parte:¿Puedo hacer esto en Lisp?
encontrar el índice de algo en una lista. ejemplo:
(index-of item InThisList)
reemplaza algo en un lugar específico de una lista. ejemplo:
(replace item InThisList AtThisIndex) ;i think this can be done with 'setf'?
devolver un artículo en un índice específico. ejemplo:
(return InThisList ItemAtThisIndex)
Hasta este punto, he estado fingiendo con mis propias funciones. Me pregunto si solo estoy creando más trabajo para mí.
Ésta es la forma en que he estado fingiendo número 1:
(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))
Además, no estamos 'reemplazando' un elemento en una lista. Estamos copiando los primeros elementos (r-1) y colocando el nuevo valor en r, donde cdr está conectado al elemento (r + 1), ya que se trata de persistencia. – nlucaroni