Re: a simple question about Arrays.asList

2015-05-22 Thread webber
Hi Aaron,

Thank you for your reply. I was able to understand.

 Why are you trying to use Arrays#asList btw? There are probably better 
ways to do what you're trying to do.

I just wanted to test reify to implement java.util.Comarator as follows:

(java.util.Collections/sort  x 
 (reify java.util.Comparator
 (compare [this x y]
   (Integer/compare x y

Initially, I gave a test data like this.

 (def x 
  (doto (java.util.ArrayList.)
(.add 3)(.add 1)(.add 2)))

 However, I thought asList is better. Are there better ways to do ?

Thanks,
MH

Since Arrays.asList is a variadic method, the Java compiler is magically 
 creating an array behind the scenes for you when you write Java code 
 invoking it.

 Clojure does variadic functions differently for native clojure code.

 To do interop with a Java variadic method have to create the array 
 yourself:
 (java.util.Arrays/asList (make-array Object 1 2 3))

 Why are you trying to use Arrays#asList btw? There are probably better 
 ways to do what you're trying to do.

 --Aaron

 On Thu, May 21, 2015 at 5:08 PM, webber tokoma...@gmail.com javascript:
  wrote:

 I am trying to use java.util.Arrays/asList in Clojure.

 (java.util.Arrays/asList 1 2 3)

 CompilerException java.lang.IllegalArgumentException: No matching method: 
 asList, compiling:(NO_SOURCE_PATH:1:1) 

 (java.util.Arrays/asList 1)

 ClassCastException java.lang.Long cannot be cast to [Ljava.lang.Object; 
  user/eval7195 (NO_SOURCE_FILE:1)

 What should I do to work it ?

 -- 
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clo...@googlegroups.com 
 javascript:
 Note that posts from new members are moderated - please be patient with 
 your first post.
 To unsubscribe from this group, send email to
 clojure+u...@googlegroups.com javascript:
 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+u...@googlegroups.com javascript:.
 For more options, visit https://groups.google.com/d/optout.




-- 
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/d/optout.


Re: a simple question about Arrays.asList

2015-05-22 Thread webber
Hi Mauricio,

The into-array worked fine !

Thanks,
MH
 

 There are many things that need to be understood in a call like this.

 First of all, that method receives an array as its argument:  
 https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList(T...)

 From your first example I think you are trying to translate to clojure the 
 following java call:

 java.util.Arrays.asList(1, 2, 3);

 In java this is a varargs call, which means java will change the call to 
 one using an array as the parameter 
 (http://docs.oracle.com/javase/8/docs/technotes/guides/language/varargs.html).

 So, in order to make that call we need to wrap those arguments in an 
 array. The easiest way to do this would be to wrap the arguments in a 
 vector an turn that into an array:

 user (java.util.Arrays/asList (into-array [1 2 3]))
 [1 2 3]

 If you don't already have a sequence (the vector in the previous example) 
 then you can use a function to do the work:

 user (defn as-list [ args] (java.util.Arrays/asList (into-array args)))
  #'user/as-list
 user (as-list 1 2 3)
 [1 2 3]
 user (type (as-list 1 2 3))
 java.util.Arrays$ArrayList


 Cheers,
 Mauricio


-- 
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/d/optout.


Re: a simple question about Arrays.asList

2015-05-22 Thread Rafal Lewczuk

Hi,

Try this:

(java.util.Arrays/asList (to-array [1 2 3 4]))


Regards,
rle



On 21.05.2015 23:08, webber wrote:

I am trying to use java.util.Arrays/asList in Clojure.

(java.util.Arrays/asList 1 2 3)

CompilerException java.lang.IllegalArgumentException: No matching method:
asList, compiling:(NO_SOURCE_PATH:1:1)

(java.util.Arrays/asList 1)

ClassCastException java.lang.Long cannot be cast to [Ljava.lang.Object;
  user/eval7195 (NO_SOURCE_FILE:1)

What should I do to work it ?



--
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/d/optout.


Re: a simple question about Arrays.asList

2015-05-21 Thread Aaron Cohen
Since Arrays.asList is a variadic method, the Java compiler is magically
creating an array behind the scenes for you when you write Java code
invoking it.

Clojure does variadic functions differently for native clojure code.

To do interop with a Java variadic method have to create the array yourself:
(java.util.Arrays/asList (make-array Object 1 2 3))

Why are you trying to use Arrays#asList btw? There are probably better ways
to do what you're trying to do.

--Aaron

On Thu, May 21, 2015 at 5:08 PM, webber tokomakoma...@gmail.com wrote:

 I am trying to use java.util.Arrays/asList in Clojure.

 (java.util.Arrays/asList 1 2 3)

 CompilerException java.lang.IllegalArgumentException: No matching method:
 asList, compiling:(NO_SOURCE_PATH:1:1)

 (java.util.Arrays/asList 1)

 ClassCastException java.lang.Long cannot be cast to [Ljava.lang.Object;
  user/eval7195 (NO_SOURCE_FILE:1)

 What should I do to work it ?

 --
 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/d/optout.


-- 
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/d/optout.


Re: a simple question about Arrays.asList

2015-05-21 Thread Mauricio Aldazosa
There are many things that need to be understood in a call like this.

First of all, that method receives an array as its argument:
https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList(T...)

From your first example I think you are trying to translate to clojure the
following java call:

java.util.Arrays.asList(1, 2, 3);

In java this is a varargs call, which means java will change the call to
one using an array as the parameter
(http://docs.oracle.com/javase/8/docs/technotes/guides/language/varargs.html).

So, in order to make that call we need to wrap those arguments in an array.
The easiest way to do this would be to wrap the arguments in a vector an
turn that into an array:

user (java.util.Arrays/asList (into-array [1 2 3]))
[1 2 3]

If you don't already have a sequence (the vector in the previous example)
then you can use a function to do the work:

user (defn as-list [ args] (java.util.Arrays/asList (into-array args)))
 #'user/as-list
user (as-list 1 2 3)
[1 2 3]
user (type (as-list 1 2 3))
java.util.Arrays$ArrayList


Cheers,
Mauricio

-- 
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/d/optout.