【发布时间】:2013-06-12 19:53:32
【问题描述】:
这个问题涉及到 clatrix Clojure 库 [1] 以及 jblas Java 库 [2](前者部分包裹了后者)。
我通过 clatrix 目录中的 lein repl 启动 Clojure REPL,其 project.clj 指定了对 org.jblas 的依赖。 (这是 clatrix 与我的问题的相关程度。)
我可以 importjblas 的课程,但我想改为 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)
我只能require Clojure 库而不是 Java 库吗?我犯了标点错误吗?
理由:如果我可以将org.jblas.Solve 变成required 并别名为S(仅作为示例),我可以简单地使用(S/solveLeastSquares foo bar),我发现它比点更好-空间符号。此外,斜线符号在 clatrix 的源代码中被使用,并且在 REPL 中进行实验以简化复制粘贴时也使用它会很好。
[1] 见https://github.com/tel/clatrix
[2] 尤其是它的Solve类:https://github.com/mikiobraun/jblas/blob/master/src/main/java/org/jblas/Solve.java#L44
【问题讨论】:
-
对solveLeastSquares的等效且更简洁的调用:
(Solve/solveLeastSquares foo bar)。