Альтернатива использованию REPL в Clojure для быстрого тестирования - PullRequest
0 голосов
/ 08 октября 2018

В мире Python, когда мне нужно что-то попробовать, я просто создаю новый файл a.py, вставляю код, который хочу попробовать, и запускаю его.Это работает из-за строки shebang #!/usr/bin/env python3, которая сообщает ОС, какой интерпретатор должен вызывать файл.

Есть ли эквивалент этого в clojure?Я не хочу прыгать через все циклы запуска lein new app и указания основных ns, каждый раз, когда я просто хочу проверить, что несколько строк кода делают в файле.

Обратите внимание, что я ужезнать о Lein Repl.И я попытался использовать это как шебанг #!/usr/bin/lein repl Но это просто вызывает ошибку No :main namespace specified in project.clj.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Вы можете сделать это с загрузкой.См. https://github.com/boot-clj/boot/wiki/Scripts

Кроме того, ClojureVerse имеет поток по этому вопросу на https://clojureverse.org/t/scripting-with-clj/1618/5, где обсуждаются некоторые варианты.

Тем не менее, вы должны знать, что такой подходнаверное не очень полезно.С одной стороны, вы часто хотите управлять зависимостями, с другой - время запуска JVM, особенно когда вам нужно сначала скомпилировать некоторые исходные коды.Если вам нужно запустить скрипт несколько раз, потому что вы пытаетесь что-то сделать, время запуска быстро становится настоящим препятствием.

В качестве идеи я обычно держу проект leiningen для быстрых экспериментов.Здесь я могу настроить зависимости по мере необходимости и быстро запустить REPL, чтобы возиться с идеями и опробовать вещи.Для меня это не редкость, когда этот REPL запущен и Emacs уже подключен.

0 голосов
/ 08 октября 2018

Если у вас установлены инструменты CLI Clojure , то вы можете использовать сценарии shebang:

test.clj:

#!/usr/bin/env clj

(def x 10)
(println "x =" x)

В терминале:

chmod +x test.clj
./test.clj

Выход:

x = 10

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...