Я пытаюсь оценить строку, содержащую вызов функции. Функция определена в том же пространстве имен, где происходит оценка. Все работает хорошо, если символ приходит из библиотеки со ссылкой внутри ns
body, например: (ns myname.myapp (:require [clj-time.core]))
.
Моя цель - загрузить файл (формат edn), который взаимодействует с пользовательскими символами. Вот минимальная настройка для воспроизведения проблемы:
(ns myname.myapp
(:import [java.time Instant])
(:gen-class))
(defn time-now []
(->
(Instant/now)
(.toString)))
(defn -main [& args]
(prn (eval (read-string "{:now (time-now)}"))))
Если я оцениваю sexp по sexp внутри буфера исходного файла, то все в порядке, но выполнение cli clj -m myname/myapp
приводит к Unable to resolve symbol: time-now in this context
. Любые идеи? Заранее спасибо.