Одна вещь, о которой я немного смутил, - это различия между parens и brackets в clojure require statement. Мне было интересно, может ли кто-нибудь объяснить это мне. Например, они делают то же самое:
(ns sample.core
(:gen-class)
(:require clojure.set clojure.string))
и
(ns sample.core
(:gen-class)
(:require [clojure.set]
[clojure.string]))
Однако это работает из repl
(require 'clojure.string 'clojure.test)
Но сбой в файле clj
(ns sample.core
(:gen-class)
(:require 'clojure.string 'clojure.test))
...
Exception in thread "main" java.lang.Exception: lib names inside prefix lists must not contain periods
at clojure.core$load_lib.doInvoke(core.clj:5359)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
....
В то время как они могут сделать то же самое:
(ns sample.core
(:gen-class)
(require clojure.set clojure.string))
(ns sample.core
(:gen-class)
(:require clojure.set clojure.string))
В общем, я не понимаю этого. Я понимаю использование, импорт и требование. Но я не понимаю ":" и различия между вещами в [] и "() и т.д. Может ли кто-нибудь осветить эту тему интуитивно?