Wiele razy, gdy próbuję napisać jakąś funkcję, otrzymuję wyjątek. To normalne. W Javie możesz znaleźć miejsce i powody, dla których wyjątek się pojawia, ale w tekstach wyjątków clojure po prostu mnie oszalam. Czy jest kilka wskazówek, jak odczytywać wyjątki w clojure i jak znaleźć miejsce w wyjątku kodu i dlaczego?Jak odczytać wyjątki clojure w REPL?
Na przykład wezmę jakiś kod:
(do
(list?)
(list? [])
(list? '(1 2 3))
(list? (defn f [] (do())))
(list? "a"))
kiedy wywołać tę funkcję w REPL dostanę
java.lang.IllegalArgumentException: Wrong number of args (0) passed to: core$list-QMARK- (NO_SOURCE_FILE:46)
które nie pomagają mi dużo, aby znaleźć problem w drugiej linii. W nieco bardziej skomplikowanym kodzie nie da prawie żadnych informacji. (Oczywiście, że mówi na liście? W niektórych jest błędna liczba argumentów.) Czy to źle, że próbuję napisać kod w REPL? Jak czytać komunikaty wyjątków w REPL? Czy istnieje sposób uzyskania lepszych informacji na temat wyjątków w REPL?
Możliwe duplikaty http://stackoverflow.com/questions/2352020/debugging-in-clojure. –
Związany również z http://stackoverflow.com/questions/14297079/why-are-clojure-stacktraces-so-long/14298576#14298576 – JohnJ