Clojure-инвентарь, стартовый набор

Нам понадобится:

CLI-tools и REPL

На Мак Clojure можно установить через brew.

После установки доступны команды clojure и clj. И то и то запускает консольный REPL, но clj оборачивает процесс в rlwrap, чтобы сделать работу чуть комфортнее (сохраняет историю, проверяет скобочки и пр.).

Чтобы REPL в терминале был совсем красивый и функциональный, можно поставить rebel-readline. В нём можно даже включить vi-режим. Документация, автодополнение, подсветка, поиск по доступным функциям, частичное выполнение кода под курсором — все это там есть:

Настройки для Clojure-проектов принято хранить в файлах .edn. EDN (Extensible Data Notation) — декларативная нотация в стиле Clojure, типа JSON для JavaScript. Файлы зависимостей принято именовать deps.edn.

В директории ~/.clojure можно создать deps.edn на уровне пользователя и добавлять в него разные алиасы, зависимости и пр. штуки, которые хочется иметь в консоли.

Менеджер проектов и зависимостей

Leiningen — самый популярный инструмент для работы с проектами, зависимостями, сборкой и деплоем. Установить можно через Brew:

brew install leiningen

Leiningen даже без проектов понадобится то тут, то там. Например, плагины для редакторов его захотят, чтобы установить nREPL — REPL-сервер, который будет выполнять код из редактора: написал строчку, жмакнул кнопку, строчка выполнилась и тут же рядом показался результат. Так программируют на Clojure.

Редактор

Попробовал Cursive для Idea, Calva для VS Code и разные штуки для Sublime.

Cursive слишком энтерпрайз-левел. Если проект большой, кругом Java, то да, он хорошо подойдет. На начальном этапе это оверкил.

В Sublime, который я все время юзаю, как-то тухловато с REPL-ом. Остановился на VS Code.

Плагины для VSCode:

Получилось так:

Calva использует ESC, чтобы убирать вывод REPL-сообщений в коде. Это конфликтует с Vim-плагином, где ESC используется для выхода в нормальный режим редактирования. Надо залезть и перемапить на что-то другое.