Я недавно начал изучать Clojure, и мне было интересно, существует ли стандартный способ выполнения простого файла .clj.
Я установил Leiningen и создал свой первый проект под названием my-stuff используя lein новое приложение my-stuff .
Чтобы запустить my-stuff.core , я начал с lein run :
user>lein run
Hello, World!
Затем я попытался lein repl , затем:
user=> (require 'my-stuff.core)
nil
user=> (my-stuff.core/-main)
Hello, World!
nil
Я также использовал lein repl , чтобы выполнить некоторые базовые оценки:
user=> (defn sum [x y] (+ x y))
#'user/sum
user=> (sum 1 2)
3
Я пытался определить эту функцию в my-stuff.core :
(ns my-stuff.core ((:gen-class))
(defn sum [x y] (+ x y))
(defn -main
[& args]
(sum [1 2]))
Я получаю следующую ошибку: clojure.lang.ArityException: Неверное числоargs (1) передано в: my-stuff.core / sum
Я прошу прощения, если это глупый вопрос, но как бы я правильно определил эту функцию в core.clj ? Имеет ли смысл определять его в отдельном файле и ссылаться на него из файла core.clj ?
Спасибо.
Обновление
Если функция была определена в другом файле .clj Clojure, как правильно объявить пространство имен, чтобы можно было запускать код из проекта my-stuff?