私は Java と clojure がまったく初めてです。しかし、以前に Common Lisp を使った経験があるので、clojure を試してみようと思いました。私はいくつかの非常に基本的なことを理解することができません。
これが実際の Java コードです。
import syntaxtree.*;
import visitor.*;
public class Main {
public static void main(String [] args) {
try {
Node root = new MicroJavaParser(System.in).Goal();
System.out.println("Program parsed successfully");
}
catch (ParseException e) {
System.out.println(e.toString());
}
}
}
このコードを実行すると、期待どおりの結果が得られます。
└──╼ java Main < ../input/Factorial.java
Program parsed successfully
Clojureで私はこれを試しました:
(ns clj-assign2.core)
(defn -main
[]
(def root
(.Goal
(MicroJavaParser. (. System in))))
(println "Successfully parsed"))
ただし、このコードを実行すると、次の例外が発生します。
└──╼ lein run < ../assign2/input/Factorial.java
Exception in thread "main" java.lang.IllegalArgumentException: No matching field found: Goal for class MicroJavaParser
at clojure.lang.Reflector.getInstanceField(Reflector.java:271)
at clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:300)
at clj_assign2.core$_main.invoke(core.clj:7)
< --- snipped --- >
ここで何が間違っていますか?