как выйти из repl

<p>я пытаюсь выйти из repl.</p><p>я использую <code>(. system exit 0)</code> или <code>(system/exit 0)</code>, но это вызывает ошибку:</p><pre><code>exception in thread "thread-3" java.lang.runtimeexception: java.lang.indexoutofboundsexception </code></pre><p>есть ли другой способ выйти из repl? как я могу решить эту ошибку?</p>

<p>вы можете отправить символ конца файла.</p><p>вы можете просто нажать ctrl-d (* nix) или ctrl-z (windows), чтобы выйти из repl.</p>

<p>похоже, у вас другая проблема в вашем коде.</p><p>способ выхода из repl <em>is</em>: <code>(system/exit 0)</code></p><p>альтернативный синтаксис <code>(. system exit 0)</code> также работает.</p><p>вы можете проверить это из чистого репла, начатого с: <code>java -cp clojure.jar clojure.main -r</code></p><p>исключение, которое вы получаете, может показывать ошибку в некотором индексированном поиске до того, как ваш код достигнет предполагаемой точки выхода, очевидно, в другом потоке.</p>

<p>проблема с (system/exit 0) состоит в том, что он убивает всю jvm. на самом деле вопрос заключается в том, как программно выйти из текущей реплики и вернуться к любой функции, запускающей эту реплику.</p><p>вот удобный хак:</p><pre><code>(clojure.main/repl ; exit the repl whenever the user enters "exit" at the prompt. :read (fn [request-prompt request-exit] (let [form (clojure.main/repl-read request-prompt request-exit)] (if (= 'exit form) request-exit form)))) </code></pre><p>clojure.main/repl неоднократно вызывает читателя, по умолчанию repl-read, чтобы получить по одной форме за раз. один из аргументов читателя - это специальный объект-страж, который читатель должен вернуть, когда больше нет форм для чтения. средство чтения по умолчанию, repl-read, возвращает значение часового только в eof. в приглашении repl-read у вас нет доступа к объекту sentinel, поэтому вы не можете вернуть его, чтобы сообщить оценщику, что вы завершили ввод форм. установив свой собственный ридер, вы можете проверить конкретную форму - например, символ выхода - и возвращать сторожевой объект всякий раз, когда эта форма читается, указывая, таким образом, оценщику, что вы готовы выйти из repl, фактически не убивая вся вм.</p>

<p>я просто хотел выйти из своего repl и приземлился здесь.</p><p>это, кажется, вопрос, который приходит в голову каждому, когда он начинает делать первые шаги в clojure repl. и, конечно же, я не прочитал сообщение о запуске. ответ на мой clojure 1.7.0 - (выход) или (выход) или control-d, как указано в других ответах.</p><pre><code>nrepl server started on port 49276 on host 127.0.0.1 - nrepl://127.0.0.1:49276 repl-y 0.3.7, nrepl 0.2.10 clojure 1.7.0 java hotspot(tm) 64-bit server vm 1.8.0\_72-b15 docs: (doc function-name-here) (find-doc "part-of-name-here") source: (source function-name-here) javadoc: (javadoc java-object-or-class-here) exit: control+d or (exit) or (quit) results: stored in vars *1, *2, *3, an exception in *e user=> (exit) bye for now! </code></pre>

<p>вы можете использовать следующую комбинацию клавиш для выхода из cider repl в emacs: <code>c-c c-q</code></p>

<p>если вы устанавливаете "lein", то это <code>exit</code> или <code>quit</code>, например:</p><pre><code>$ lein repl ... user=>exit bye for now! </code></pre>

<p>сегодня у меня есть ответ, это то, что мне нужно</p><pre><code>(import ('java.lang.management managementfactory) (use 'clojure.contrib.shell) (defn process-pid [] (let [m-name (.getname (managementfactory/getruntimemxbean))] (first (.split m-name "@")))) (defn exit (sh "kill" (process-pid)) </code></pre>

<p>в windows (протестировано на windows 7 x64), используя стандартную команду shell (cmd.exe), символ ctrl-z (сопровождаемый клавишей ввода), по-видимому, является индикатором конца файла, он выпал из repl обратно в командную строку. я подозреваю, что это также будет работать аналогично в windows powershell, может кто-нибудь, кто знаком с ней, протестирует и подтвердит ...</p><p>также обратите внимание, что это для исходного clojure repl - если вы запускаете datomic shell (который выглядит как экземпляр java beanshell), введите "quit ();" ...</p><p>нтн.</p>

<p>для результата из repl: если вы запускаете repl из командной строки, то (как упоминает шон) ctrl-d<br> если вы запускаете его из слизи, тогда alt-x slime-quit-lisp должен это сделать. если вы используете его из eclipse, тогда 
я не уверен, что есть чистый способ выйти
 используйте маленькую красную кнопку.</p>