Hi everyone,
I've encountered an unexpected NullPointerException while translating
some early SICP code into Clojure 1.3.0. In particular, I'm
implementing the iterative sqrt procedure from section 1.1.7.
Here's my code:
(defn square [x] (* x x))
(defn abs [x]
(cond
(< x 0) (- x)
:else x))
(defn average [x y]
(/ (+ x y) 2))
(defn sqrt
([x] (sqrt 1.0 x))
([guess x]
(letfn [(good-enough? [guess]
(< (abs (- (square guess) x)) 0.001))
(improve [guess]
(average guess (/ x guess)))]
(if (good-enough? guess)
guess
(recur (improve guess) x)))))
Rather mysteriously, this works correctly for inputs less than roughly
(square 2718.259...); anything larger throws a "NullPointerException
clojure.lang.Numbers.lt (Numbers.java:3693)".
Any ideas?
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en