Все, что вам нужно сделать, это запустить clojure.main/repl
на своей главной.
Документы объясняют точки входа, которые у вас есть:
"Generic, reusable, read-eval-print loop. By default, reads from *in*,
writes to *out*, and prints exception summaries to *err*. If you use the
default :read hook, *in* must either be an instance of
LineNumberingPushbackReader or duplicate its behavior of both supporting
.unread and collapsing CR, LF, and CRLF into a single \\newline. Options
are sequential keyword-value pairs. Available options and their defaults:
- :init, function of no arguments, initialization hook called with
bindings for set!-able vars in place.
default: #()
- :need-prompt, function of no arguments, called before each
read-eval-print except the first, the user will be prompted if it
returns true.
default: (if (instance? LineNumberingPushbackReader *in*)
#(.atLineStart *in*)
#(identity true))
- :prompt, function of no arguments, prompts for more input.
default: repl-prompt
- :flush, function of no arguments, flushes output
default: flush
- :read, function of two arguments, reads from *in*:
- returns its first argument to request a fresh prompt
- depending on need-prompt, this may cause the repl to prompt
before reading again
- returns its second argument to request an exit from the repl
- else returns the next object read from the input stream
default: repl-read
- :eval, function of one argument, returns the evaluation of its
argument
default: eval
- :print, function of one argument, prints its argument to the output
default: prn
- :caught, function of one argument, a throwable, called when
read, eval, or print throws an exception or error
default: repl-caught"
Обычные вещи здесь:
:init
: добавьте свои собственные настройки для использования REPL. Например. use
некоторые библиотеки
:prompt
: отображать другое «состояние», чем ns
:print
: используйте какой-нибудь симпатичный принтер
Стоит отметить, что каждая создаваемая вами программа (например, uberjaring), содержащая clojure.main
(например, clojure-$VERSION.jar
), может запускать REPL из этого uberjar, чтобы вы могли запускать разные main
: s оттуда.
Самореклама: если вам нужно дополнительное вдохновение, это «модифицированные» репли, которые я делал в прошлом:
- REST-REPL : добавление навигации по URL с сохранением состояния и инструментов для использования API-интерфейсов JSON / XML
- WREPL : Используйте встроенную функцию, чтобы иметь композицию на основе модуля для REPL