Hello all.

I have a following deftype:

(deftype NDArray
    [^objects data
     ^long ndims
     ^longs shape
     ^longs strides])

(
https://github.com/si14/matrix-api/blob/70b376f58ec3846df6622b971001c3ade32d0725/src/main/clojure/clojure/core/matrix/impl/ndarray.clj#L30
)

Then, when I use "data" field in various contexts like aget/aset, Clojure 
warns me about reflection (and rightfully so). It's not a problem with 
primitive arrays because we can use (longs …) and similar functions to make 
cast explicitly, but there is no (objects …). With some googling I've found 
a following solution:

    (let […
          #^"[Ljava.lang.Object;" data (.data m)
          …]
      (aset data idx v))))

(
https://github.com/si14/matrix-api/blob/70b376f58ec3846df6622b971001c3ade32d0725/src/main/clojure/clojure/core/matrix/impl/ndarray.clj#L259
)

But it's really really ugly. Is there a way to make it better?

-- 
-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to