Just a side note: you'd easily find the problem if you'd use contract programming facilities of clojure (via pre- and post-conditions, or better clojure-contracts <https://github.com/dnaumov/clojure-contracts> (shameless plug)).
среда, 16 мая 2012 г., 22:34:08 UTC+6 пользователь Jim foo.bar написал: > > Hello all... > > I've been stuck for a good 2 hours trying to figure out why I'm getting > this exception on a very simple example: > > ClassCastException clojure.lang.ArraySeq cannot be cast to [D > clojure.lang.Numbers.doubles (Numbers.java:1280) > > I have 2 very simple functions: > --------------------------------------------------------------------------------------------------- > > > (defn normalize > [data high-end low-end] > (let [norm (NormalizeArray.)] > (do (. norm setNormalizedHigh high-end) > (. norm setNormalizedLow low-end) > (. norm process data)))) ;;returns array of doubles > > > (fn [window-size prediction-size] > (let [twa (TemporalWindowArray. window-size prediction-size)] > (do (. twa analyze (normalize data)) ;;analyze expects array of doubles > (. twa process (normalize data))))) ;;same here > --------------------------------------------------------------------------------------------------- > > > > Now, I know for a fact that 'normalize' will return the last statement > in the 'do' block which is the call to the process method which in turn > will produce a double array. In theory all is well cos analyze and > process also expect double arrays for arguments. However, I am getting > the above exception even though the types are correctly passed in! I > used (class (normalize data 0.9 0.1)) and I do get back an array of > doubles!!! > > What exactly is happening? Any Java interop gurus out there? > > Thanks in advance... > > > Jim > > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en