Всякий раз, когда я пытаюсь использовать (нагрузка-файл) на моем домашнем компьютере (OSX) он выдает следующее сообщение об ошибке:Clojure (нагрузка-файл) выдает ошибку
IllegalArgumentException Parameter declaration comp should be a vector clojure.core/assert-valid-fdecl (core.clj:6732)
Когда я загрузить тот же файл на моем ящике Windows на работе он работает. В чем разница между (load-file «C: \ clojure \ pc-3.clj») и (load-file «/Users/myname/clojure/pc-3.clj»), который выдает ошибку. Другое, чем структура пути с косой чертой, отличается, но я не понимаю, почему это не работает на моих обеих системах.
BTW: кроме ОС обе системы работают JRE 1.7_025 с clojure-1.5.1.
ОБНОВЛЕНИЕ: Меня попросили найти трассировку стека, и я не уверен, как это сделать, только что начал работать с Clojure. Но буфер Emacs nrepl ошибок перечислены это для меня:
java.lang.ClassCastException: clojure.lang.PersistentVector cannot be cast to java.lang.String RT.java:318 clojure.lang.RT$3.invoke NO_SOURCE_FILE:1 user/eval278 Compiler.java:6619 clojure.lang.Compiler.eval Compiler.java:6582 clojure.lang.Compiler.eval core.clj:2852 clojure.core/eval main.clj:259 clojure.main/repl[fn] main.clj:259 clojure.main/repl[fn] main.clj:277 clojure.main/repl[fn] main.clj:277 clojure.main/repl RestFn.java:1096 clojure.lang.RestFn.invoke interruptible_eval.clj:56 clojure.tools.nrepl.middleware.interruptible-eval/evaluate[fn] AFn.java:159 clojure.lang.AFn.applyToHelper AFn.java:151 clojure.lang.AFn.applyTo core.clj:617 clojure.core/apply core.clj:1788 clojure.core/with-bindings* RestFn.java:425 clojure.lang.RestFn.invoke interruptible_eval.clj:41 clojure.tools.nrepl.middleware.interruptible-eval/evaluate interruptible_eval.clj:171 clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval[fn] core.clj:2330 clojure.core/comp[fn] interruptible_eval.clj:138 clojure.tools.nrepl.middleware.interruptible-eval/run-next[fn] AFn.java:24 clojure.lang.AFn.run ThreadPoolExecutor.java:1145 java.util.concurrent.ThreadPoolExecutor.runWorker ThreadPoolExecutor.java:615 java.util.concurrent.ThreadPoolExecutor$Worker.run Thread.java:724 java.lang.Thread.run
UPDATE: Найдено, что эта проблема сегодня. У меня возникла такая же проблема с моим окном Windows, что исходный ответ был прав, но мое предположение о том, что это связано с (load-file), было неправильным. Файл, который я загружал, имел функцию, которая не использовала вектор [] как часть самой функции. Clojure делал правильную вещь (но я совсем забыл об этом) при загрузке файла, проверяющего синтаксис, чтобы убедиться, что все было заполнено в файле. Моя функция не была такой, чтобы она не загружала файл. Я забыл, что LISP делают это, и что это особенность, а не ошибка (причина, почему мне нравятся LISP).
Я новичок в clojure, но не в LISP, и я должен был это осознать. Файл является моим учебным файлом. Все примеры, которые я перепечатываю из REPL, почему изучают и перезагружают файл с помощью новейшего, чтобы убедиться, что я набрал его правильно. Похоже, что когда я добавил новую функцию в файл, я перепечатал ее неправильно и не перезагрузил файл, чтобы проверить его. Когда я ушел и закрыл REPL, а затем вернулся после обеда и попытался перезагрузить файл, он не загрузится.
Так жаль, что это пустая трата времени. Но спасибо за помощь, и быстро. Первоначальный ответ был правильным, я просто забыл перепроверить все функции в файле.
какая версия Clojure (так что я могу посмотреть на правильную строку 6732) –
вы могли бы включить больше трассировки стека? Таким образом, я вижу, что это проблема с запуском компилятора или проблема, обнаруженная компилятором в файле. –
Это все, что было напечатано – macshaggy