Начиная с Clojure 1.3, я запутался в структуре каталогов, необходимой для создания чего-либо в Clojure.Я использую торт, чтобы построить и торт Repl.
Вот что работает.У меня есть рабочий каталог сборки addr_verify.Имя main и ns - addr-verify.Project.clj ссылается на addr-verify как на основное, а в addr_verify / src есть addr_verify.clj.Ns внутри addr_verify.clj относится к пространству имен addr-verify.
Итак, у меня был каталог mr1, но торт не скомпилирует его прямо в строке 1
(ns mr1
(use ['clojure.string :only '(split)])
(use ['clojure.string :only '(join)])
)
Если mr1 - это плохое имя, какое соглашение об именах мне следует использовать?
Я пробовал mr1_app как структуру каталогов, используя mr1-app в качестве основного имени и имени ns.I
Для mr1 в качестве каталога и имени ns я получаю
Caused by: clojure.lang.Compiler$CompilerException: java.lang.ClassCastException: clojure.lang.PersistentList cannot be cast to java.lang.Comparable, compiling:(mr1.clj:1)
Я просто не понимаю, что я делаю здесь неправильно, и я знаю, что это, вероятно, что-то действительно простое.
Редактировать:
Почему двоичный mr1 не имеет основного?
mr1 / project.clj
(defproject mr1 "0.0.1-SNAPSHOT"
:description "TODO: add summary of your project"
:dependencies [[org.clojure/clojure "1.3.0"]
[org.clojure/tools.cli "0.1.0"]]
:main mr1)
mr1 / src / mr1.clj
(ns mr1
(:use [clojure.string :only [split]]
[clojure.string :only [join]]))
(def grid-dim (atom '(0 0)))
(def mr1-pos (atom '(0 0)))
(def mr2-pos (atom '(0 0)))
(defn cvt-str-to-int
[string]
(map #(Integer/parseInt %)
(split string #" ")))
(defn prompt-for-grid-dim
[]
(do
(println "Enter the dimensions of the grid (10 10) ")
(cvt-str-to-int (read-line))
))
(defn prompt-for-rover-pos
[rover-num]
(do
(println "Enter rover's initial position on the grid (2 4) ")
(cvt-str-to-int (read-line))
))
(defn prompt-for-rover-moves
[]
(do
(println "Enter rover's moves LMMRM ")
(read-line)
))
(defn -main
[& args]
(do
(reset! grid-dim (cvt-str-to-int (prompt-for-grid-dim)))
(reset! mr1-pos (cvt-str-to-int (prompt-for-rover-pos)))
)
)