Tengo un proyecto leiningen configurado. En uno de los archivos fuente de clojure, he definido algunos registros. Mi flujo de trabajo suele ser emacs y conectarse a un REPL 'lein swank'. Una vez que me he conectado a REPL, cambio al espacio de nombre apropiado y C-c C-k a un archivo, para poder comenzar a trabajar con REPL y el código en el archivo. Sin embargo, si realizo cambios en los registros en ese archivo y C-c C-k it, el REPL no recoge los cambios.clojure REPL no detecta los cambios realizados en defrecord
Por lo tanto, tal como está, cada vez que tengo que hacer cambios en un registro, tengo que detener el proceso lein swank, reiniciarlo y volver a conectarlo desde emacs. Esto se está haciendo viejo muy rápido. ¿Qué me estoy perdiendo? He intentado C-c C-l en lugar de C-c C-k, pero eso no funciona. He intentado eliminar el directorio 'clase' en la raíz del proyecto, pero eso también es un no-go.
Agradecería cualquier idea o recomendación.
Además, como un lado, siempre estoy trabajando en el espacio de nombres donde se definen los registros.
Editar: En realidad, estoy cambiando la implementación de un protocolo en el defrecord. Una vez que lo cambio y compilo usando C-c C-k, y creo un nuevo registro en el REPL, el REPL todavía está usando la implementación del protocolo anterior.
podría pegar en una fragmento del repl mostrando el valor anterior, cambiándolo y luego el nuevo valor. Creo que ayudaría a agregar contexto para que podamos ayudar más –
@Arthur: Debería haber dejado esto más claro. Estoy cambiando la implementación de un protocolo en el defrecord, y cuando realizo ese cambio, el REPL sigue usando la implementación anterior, incluso después de crear una nueva instancia del registro. – mofeeta
Sé Slime/Swank solo de Common Lisp. Me sorprende que no uses 'C-c C-c' para compilar formularios individuales a nivel superior. Por cierto, hay 'C-c ~' para cambiar el paquete y el directorio de REPL al archivo y punto actuales. – Svante