Как отладить файл Clojure в IntelliJ?

В строке 5 нельзя установить точку останова, которая содержит [x],

IntelliJ не позволит мне сделать это. Я использовал разные плагины, такие как La Clojure и Cursive. Оба останавливаются в строке 3, а не в строке 5.

Итак, как люди вступают в код в Clojure?

Есть ли какие-либо предложения по синтаксису или, возможно, инструмент, чтобы помочь с?

(defn flattenlist
  ([x & more]
    (concat (if (vector? x)
              (apply flattenlist x)
              [x]
            )
            (if (= more nil)
              nil
              (apply flattenlist more))))
  )
(flattenlist [[1 [[2]]] 3 [4 5] 6])

1 ответ

Решение

Во-первых, по соглашению, все завершающие скобки находятся в одной строке, примерно так:

(defn flattenlist
  ([x & more]
   (println x)
   (concat (if (vector? x)
             (apply flattenlist x)
             [x])
           (if (= more nil)
             nil
             (apply flattenlist more)))))

(flattenlist [[1 [[2]]] 3 [4 5] 6])

Во-вторых, когда вы используете составные функции, легко вставить println и запустить / протестировать только эту функцию, потому что она прозрачна по ссылкам. Я всего лишь любитель Clojure, но я обычно отлаживаю с помощью printlns и юнит-тестов. Использование точек останова не так уж и надежно.

Если вы действительно хотите что-то похожее на установку точки останова, вы можете попробовать использовать этот макрос отладки (не мой).

Другие вопросы по тегам