Próbuję uzyskać dokumentację za pomocą funkcji Clojure doc
, ale nie mogę uzyskać rozpoznania z REPL (używam Emacs i SLIME). Poniższa sekwencja opisuje to, co się dzieje (komunikat błędu następuje natychmiast po każdym wierszu):Dlaczego REPL traktuje clojure.core/doc jako var?
gaidica.core> (doc first)
; Evaluation aborted.
Unable to resolve symbol: doc in this context
[Thrown class java.lang.Exception]
gaidica.core> (clojure.core/doc first)
; Evaluation aborted.
No such var: clojure.core/doc
[Thrown class java.lang.Exception]
user> (clojure.core/doc first)
; Evaluation aborted.
No such var: clojure.core/doc
[Thrown class java.lang.Exception]
user> (doc first)
-------------------------
clojure.core/first
([coll])
Returns the first item in the collection. Calls seq on its
argument. If coll is nil, returns nil.
nil
user>
jaki sposób odnoszą się do funkcji doc
i dostać ono rozpoznawane jako funkcji, a nie zmiennej?
aneksu 6/22/11, 9 godzin po pytanie pisał
@kotarak wykonane najistotniejsze. Komentarz: „Uwaga, że clojure.core/doc 1.2 i wcześniejszych clojure.repl/doc to 1.3 i nowsze. " Rzeczywiście, co następuje pracował:
user> (clojure.repl/doc first)
-------------------------
clojure.core/first
([coll])
Returns the first item in the collection. Calls seq on its
argument. If coll is nil, returns nil.
nil
user>
udało mi się potwierdzić, że Clojure 1.3 był aktywny:
user> *clojure-version*
{:interim true, :major 1, :minor 3, :incremental 0, :qualifier "master"}
user>
Ale to było zbyt skomplikowane - mój Leiningen project.clj nie podano Clojure 1.2!
Z własnego doświadczenia zauważyłem kiedyś, że REPL "oparty na SLIME" "zawiesił" wartość ścieżki klasy Java nawet po zmianie zawartości odpowiednich katalogów. Rozwiązaniem było wtedy wyjście z Emacsa i lein swank
, a następnie ponowne wprowadzenie obu i spróbuj ponownie. Próbowałem to samo i mam następujący wynik:
user> *clojure-version*
{:major 1, :minor 2, :incremental 0, :qualifier ""}
user>
Jedyny wniosek mogę sprawić, że mój poprzedni REPL używał Clojure 1.3. Projekt, nad którym pracowałem poprzednio miał wykorzystał migawkę Clojure 1.3, więc domyślam się, że REPL "jakoś wisiał" na Clojure 1.3.
Problem rozwiązany, zdobyta lekcja itp. Czy w przypadku punktów bonusowych ktoś może wyjaśnić przyczynę zdarzenia (z Clojure 1.2 vs. 1.3)?
Dziękuję wszystkim, którzy przyczynili się.
Zauważyłem, że nie przyjęły żadnych odpowiedzi na wszelkie pytania. Powinieneś zdecydowanie przyjąć kilka odpowiedzi, jeśli uważasz, że są wystarczające. Tak działają witryny stackoverflow. – bmillare
@kotarak i @bmillare: przeczytaj moje pytanie i dwie odpowiedzi. Sądzę, że zgodzisz się, że chociaż obie odpowiedzi będą pomocne, nie odpowiadasz na moje pytanie. _ To dlatego nie zaakceptowałem. –
@ gregg-williams, co jest z pewnością prawdziwe również w przypadku wszystkich innych pytań, w których nie przekazano żadnej informacji zwrotnej, czy proponowane rozwiązania pomogły, czy nie. – kotarak