2010-07-27 13 views
5

Escribí una función Lisp anteriormente que tenía un error. El primer desafío fue descubrir cómo ver la función nuevamente. Ese desafío está resuelto. Ahora que veo LO QUE he hecho mal, ¿quiero modificar el contenido de la función definida sin reescribir todo?¿Modificar la función Lisp sin reescribirla?

Parece tan inteligente como Lisp, tiene que haber una manera de hacer esto, simplemente no sé lo que es porque soy bastante nuevo en el idioma. Se puede hacer esto?

+0

Creo que veo mi malentendido. Solo estoy codificando en el REPL ahora. así que mi pregunta fue más en la línea de esto (solo y ejemplo): si tengo (defun add-something (x) (+ x 5)) y quería cambiarlo a (+ x 9) ¿hay alguna manera fácil? hacer eso sin RETENER todo (porque en mi caso la función es MUCHO más larga)? Creo que mi RESPUESTA es escribir mi código en un ARCHIVO en lugar de REPL y simplemente hacer (archivo de carga) o algo así. – trh178

Respuesta

3

A juzgar por la pregunta, creo que tiene una configuración extraña. Parece indicar que estás escribiendo tus funciones directamente en REPL. No hagas eso.

La configuración habitual es tener un IDE (por ejemplo, Emacs con Slime) donde se edita un archivo fuente, y luego "enviar" formularios de nivel superior (como las definiciones de funciones) a REPL.

+2

Sí. Para agregar a esto, puede editarlo en su lugar y volver a enviarlo, en lugar de tener que volver a escribir todo desde cero. Usa REPL solo para cosas que no necesitarás de nuevo. –

+0

exactamente ... ¡soy un idiota! (o al menos me siento como uno :), tal vez simplemente lo llamemos 'principiante' en su lugar ... jaja). def a un momento de cara/palma. gracias de todos modos por la ayuda rápida. – trh178

0

Existe la funcionalidad advice en muchos Lisps, que le permite ejecutar código adicional antes o después o alrededor de una función existente. Pero el comentario es correcto, ¿por qué no reescribirías una función si todavía estás aprendiendo y probando cosas? ¿Te cobran por el ciclo de compilación?

2

Todos los REPL útiles tienen una funcionalidad de historial. Le permite avanzar en la historia de su entrada hacia atrás y hacia adelante.

Cuando escribo código en REPL, las teclas simples como m-p recuperan el código anterior. Algunos IDEs incluso podrían ubicar el código fuente en un oyente Lisp con m-. .

En la mayoría de REPLS también puede buscar incrementalmente hacia atrás.

Si desea un registro de su entrada utilizar la función de la baba ..

Hay algunas opciones más, como recuperar el código de la función - cuando un IDE Lisp soporta eso.

Cuestiones relacionadas