Pregunta

Soy muy nuevo en Lisp. Estoy usando Allegro-Cl. Tengo dificultades para llamar a una función que he definido y cargado. Me gustaría saber cuáles son algunas formas en que puedo explorar las cosas que he definido, por ejemplo, enumerar todos los métodos en un paquete determinado, o enumerar solo variables o enumerar los nombres de los paquetes, etc.

¿Fue útil?

Solución

No estoy usando Allegro CL, por lo que solo puedo contarles sobre las herramientas que CL en sí misma proporciona para esto. Es posible que desee verificar qué tiene para ofrecer el Allegro CL IDE para esta tarea.

Puede obtener una lista de todos los paquetes con la lista de funciones de todos los paquetes. Podrías usarlo así para imprimir sus nombres:

(dolist (p (list-all-packages)) (write-line (package-name p)))

Los paquetes CL son colecciones de símbolos (es decir, nombres), no los objetos asociados con estos nombres. Debe consultar los nombres en ellos para ver si hay un valor y/o una función definida para ese símbolo. Puedes usar Símbolo para recubrir todos los símbolos en un paquete. Esto imprimiría todos los símbolos en el paquete actual:

(do-symbols (s) (print s)

Esto solo las funciones:

(do-symbols (s) (when (fboundp s) (print s)))

Y esto solo las funciones cuyo paquete de inicio es el paquete actual:

(do-symbols (s)
  (when (and (eq (symbol-package s) *package*)
             (fboundp s))
    (print s)))

Otros consejos

Si recuerda una parte del nombre, siempre puede usar APROPOS (posiblemente limitado a un paquete específico) para encontrar el nombre completo.

Tuve el mismo problema. Después de leer la documentación, llegué a la opinión de que no hay forma de recordar una definición escrita en REPL.

Para resolver este problema, siempre escribo en la ventana del editor (CTRL+N si no está presente). De esta manera, puedo escribir definiciones, editarlas, etc. con gran conveniencia. Si necesito evaluar una definición, presiono CTRL+E para una evaluación incremental (consulte otras opciones en el menú Herramientas). Mantengo una ventana del oyente a la izquierda y una ventana del editor a la derecha para ver entradas y salidas.

Todavía hay un pequeño problema que incluso puede causar algunos errores: si olvida evaluar una definición después de haber hecho cambios, el anterior permanece en el repl. Sigue presionando Ctrl+E.

Si tiene varios archivos abiertos y desea localizar una definición en uno de los archivos de origen, puede usar la búsqueda> apropos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top