Как вы можете сбрасывать содержимое файла Clojure REPL в файл?

Итак, я работал над учебником Clojure, и это довольно забавно. К сожалению, каждый раз, когда я закрываю REPL, я теряю все defn и def, которые я создал в предыдущем сеансе.

Итак, чтобы сэкономить время в будущем, возможно ли, что Clojure REPL сохранит все, что я набрал в файл, чтобы я мог выкопать то, что мне нужно для использования в будущем?

Ответ 1

Я думаю, что большинство людей работают, используя свою IDE для отправки фрагментов кода в REPL, вместо того, чтобы делать много прямого взлома в REPL. Таким образом, вы лучше понимаете текущее состояние программы.

Ответ 2

Если вы используете Emacs и SLIME, вы можете сохранить буфер REPL в файл так же, как сохранение любого другого буфера.

Ответ 3

Если вы используете Unix-подобную операционную систему, вы можете запустить свой REPL с помощью rlwrap. Это даст вам Ctrl-R для легкого доступа к командам из истории, а также для хранения самой истории.

Вам просто нужно установить rlwrap и добавить его в строку, где вы запускаете REPL, например. rlwrap lein repl

Ответ 4

Несколько советов:

  • Я делаю много кодирования в REPL, но как только я пишу что-то, что работает, я копирую/вставляю его в исходный файл. Затем я могу просто запустить или перезагрузить исходный файл, когда захочу вернуть среду REPL в полностью настроенное состояние.
  • Некоторые REPL (например, Eclipse Counterclockwise REPL, которые я использую) сохраняют историю из предыдущих сеансов, поэтому вы можете стрелять вверх в предыдущие команды REPL, которые вы хотите повторить.

Ответ 5

На самом деле это сложнее, чем кажется, потому что такой дамп должен учитывать зависимости символов и варов и выводить их в файл в правильном порядке символов. Тем не менее, поскольку код - это данные, нужно иметь возможность написать функцию, которая делает это.