Ответ 1
пространство имен greeter на неправильном уровне
(ns omg.greeter)
Имена в пространстве имен соответствуют папкам в пути, поэтому для использования файла в
/src/omg/greeter.clj, этот файл должен содержать пространство имен omg.greeter
. если вы хотите, чтобы он просто назывался greeter
, переместите его вниз по одной папке
При использовании require
вам нужно указать пространство имен вызываемой функции, в данном случае это будет (omg.greeter/greet)
. так как это боль, функция use
требует пространства имен и добавляет все ее функции в текущее пространство имен. Другим вариантом, который является более избирательным, является использование require с параметром: refer в определении пространства имен
(ns omg.core
(require [omg.greeter :refer :all]))
или
(ns omg.core
(require [omg.greeter :refer [greet]]))
Большинство людей помещают требования пространства имен в вызов ns
в верхней части файла.
быстрое чтение http://clojure.org/namespaces, надеюсь, поможет