Этот вопрос включает библиотеку Clatrix Clojure [1], а также библиотеку jblas Java [2] (первая частично обертывает последнюю).Java-Clojure interop в REPL: 'require versus' импортирует класс Java
Я запускаю Clojure REPL через lein repl
в каталоге clatrix, чья project.clj
определяет зависимость от org.jblas
. (Это степень важности клатриса для моего вопроса.)
Я умею import
классы jblas, но я бы хотел их require
.
user> (import '[org.jblas DoubleMatrix Solve])
org.jblas.Solve
user> (. Solve solveLeastSquares (. DoubleMatrix rand 2 2) (. DoubleMatrix rand 2 1))
#<DoubleMatrix [1.965810; -1.044592]>
user> (require '[org.jblas Solve])
FileNotFoundException Could not locate org/jblas/Solve__init.class or org/jblas/Solve.clj on classpath: clojure.lang.RT.load (RT.java:432)
Can I только require
библиотеки Clojure, а не Java из них? Я делаю ошибку пунктуации?
Обоснование: если бы я мог получить org.jblas.Solve
быть require
d и псевдонимами, скажем, S
(только в качестве примера), я мог бы просто сделать (S/solveLeastSquares foo bar)
, которые я нахожу лучше, чем точка пространства нотации. Кроме того, нотация косой черты используется по всему исходному коду клатрикса, и было бы неплохо использовать это также при экспериментировании в REPL для облегчения копирования-вставки.
[1] См https://github.com/tel/clatrix [2] Особенно его Solve
класс: https://github.com/mikiobraun/jblas/blob/master/src/main/java/org/jblas/Solve.java#L44
Эквивалентный и более сжатый вызов для решения: «(Решить/решитьLeastSquares foo bar)». –