Как вы можете сбросить содержимое Clojure REPL в файл? - PullRequest
11 голосов
/ 14 июля 2011

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

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

Ответы [ 5 ]

7 голосов
/ 14 июля 2011

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

5 голосов
/ 14 июля 2011

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

2 голосов
/ 14 июля 2011

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

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

1 голос
/ 14 июля 2011

Пара советов:

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

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

...