On Thu, Dec 15, 2011 at 5:53 PM, Cedric Greevey <cgree...@gmail.com> wrote:

> (defn dist
>  "Shortest distance between x,y and x2,y2 in toroidal space of dimensions
> w,h.
>   Input coordinates should be in range (0,0)-(w,h). For instance, will give
>   1.414... if x,y = (0,0) and x2,y2 = (w-1,h-1), as these are diagonally
>   adjacent."
>  ([x y x2 y2 w h]
>    (let [x2s [(- x2 w) x2 (+ x2 w)]
>          y2s [(- y2 h) y2 (+ y2 h)]
>          dist-sqrs (for [x2 x2s y2 y2s]
>                      (let [dx (- x2 x)
>                            dy (- y2 y)]
>                        (+ (* dx dx) (* dy dy))))]
>      (Math/sqrt (double (apply min dist-sqrs))))))
> #'user/dist
>
> (defn dist2
>  "Shortest distance between x,y and x2,y2 in toroidal space of dimensions
> w,h.
>   Input coordinates should be in range (0,0)-(w,h). For instance, will give
>   1.414... if x,y = (0,0) and x2,y2 = (w-1,h-1), as these are diagonally
>   adjacent."
>  (^double [x y x2 y2 w h] ; Sole difference is the ^double added here.
>    (let [x2s [(- x2 w) x2 (+ x2 w)]
>          y2s [(- y2 h) y2 (+ y2 h)]
>          dist-sqrs (for [x2 x2s y2 y2s]
>                      (let [dx (- x2 x)
>                            dy (- y2 y)]
>                        (+ (* dx dx) (* dy dy))))]
>      (Math/sqrt (double (apply min dist-sqrs))))))
> #<CompilerException java.lang.IllegalArgumentException: fns taking
> primitives support only 4 or fewer args,
>
> But the function isn't *taking* primitives. It's only *returning* a
> primitive, after taking Objects. So it obviously shouldn't produce
> this error.


Not a bug, but the error should be clearer.

David

-- 
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

Reply via email to