Re: Interop question concerning optional args

2012-12-11 Thread Andy Fingerhut
There is a ticket filed for it, in case some contributor wants to update the 
patches for it.  It got intertwined with CLJ-445's patch, which hasn't been 
updated in a while, so you might want to start fresh rather than untangle the 
history there.

http://dev.clojure.org/jira/browse/CLJ-440

Andy

On Dec 11, 2012, at 4:30 AM, Vladimir Tsichevski wrote:

> I found this (mis)feature quite annoying too. I think, we all shall ask the 
> language authors to fix it.
> 
> On Tuesday, December 11, 2012 10:44:34 AM UTC+4, Andy Fingerhut wrote:
> You can pass in a length 0 array of java.nio.file.attribute.FileAttribute's 
> like so:
> 
> (java.nio.file.Files/createTempDirectory "mytempname" (make-array 
> java.nio.file.attribute.FileAttribute 0))
> 
> Andy
> 
> 
> On Dec 10, 2012, at 8:54 PM, Dave Kincaid wrote:
> 
>> I just came across this same problem while trying to use Java 7's 
>> java.nio.file.Files.createTempDirectory() 
>> (http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#createTempDirectory(java.lang.String,
>>  java.nio.file.attribute.FileAttribute...))
>> 
>> Clojure won't let me just do (java.nio.file.Files/createTempDirectory 
>> "mydir")
>> 
>> It wants the FileAttribute argument. Can anyone help me get past this? I'm 
>> stuck since I really can't figure out how to create a FileAttribute. Am I 
>> better off just using Apache commons or something like that?
>> 
>> On Monday, September 27, 2010 7:20:04 PM UTC-5, ataggart wrote:
>> The vararg at the end of the method is just syntactic sugar for an 
>> array, so the "add" method actually takes 4 args, the last being a 
>> Resource array.  The java compiler just replaces "missing" varargs 
>> with an empty array. 
>> 
>> My guess is that the reflection mechanisms in the compiler just look 
>> at type/arity.  The Method object has a isVarArg() boolean, so that 
>> could be used to allow omitting varargs altogether.  That would need 
>> to be an enhancement to the clojure compiler, so I opened a ticket: 
>> 
>> https://www.assembla.com/spaces/clojure/tickets/440-java-method-calls-cannot-omit-varargs
>>  
>> 
>> 
>> On Sep 27, 1:16 pm, JonathanBelolo  wrote: 
>> > While toying with the Sesame2.3 library, I've come across the 
>> > following behavior for the first time. 
>> > 
>> > This is taken from the api doc for 
>> > org.openrdf.repository.base.RepositoryConnectionBase: 
>> > 
>> > add(Resource subject, URI predicate, Value object, Resource... 
>> > contexts) 
>> >   Adds a statement with the specified subject, predicate and 
>> > object to this repository, optionally to one or more named contexts. 
>> > 
>> > But apparently, Clojure seems to think the optional args are 
>> > mandatory... 
>> > 
>> > (.add con alice RDF/TYPE person) 
>> > 
>> > No matching method found: add for class 
>> > org.openrdf.repository.sail.SailRepositoryConnection 
>> >   [Thrown class java.lang.IllegalArgumentException] 
>> > 
>> > So I run 
>> > 
>> > (grep #".add" (.getMethods (.getClass con))) 
>> > 
>> > #> > org.openrdf.repository.base.RepositoryConnectionBase.add(org.openrdf.model.
>> >  
>> > Resource,org.openrdf.model.URI,org.openrdf.model.Value,org.openrdf.model.Re
>> >  source[]) 
>> > throws org.openrdf.repository.RepositoryException>) 
>> > 
>> > Finally the following works... 
>> > 
>> > (.add con alice RDF/TYPE person (make-array Resource 1)) 
>> > nil 
>> > 
>> > Is this behavior normal? Are optional args mandatory when called with 
>> > interop? 
>> > 
>> > Thanks for your help :) 
>> > 
>> > Jonathan
>> 
>> -- 
>> 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
>> 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
>> 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 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 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

Re: Interop question concerning optional args

2012-12-11 Thread Vladimir Tsichevski
I found this (mis)feature quite annoying too. I think, we all shall ask the 
language authors to fix it.

On Tuesday, December 11, 2012 10:44:34 AM UTC+4, Andy Fingerhut wrote:
>
> You can pass in a length 0 array of 
> java.nio.file.attribute.FileAttribute's like so:
>
> (java.nio.file.Files/createTempDirectory "mytempname" (make-array 
> java.nio.file.attribute.FileAttribute 0))
>
> Andy
>
>
> On Dec 10, 2012, at 8:54 PM, Dave Kincaid wrote:
>
> I just came across this same problem while trying to use Java 7's 
> java.nio.file.Files.createTempDirectory() 
> (http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#createTempDirectory(java.lang.String,
>  
> java.nio.file.attribute.FileAttribute...))
>
> Clojure won't let me just do (java.nio.file.Files/createTempDirectory 
> "mydir")
>
> It wants the FileAttribute argument. Can anyone help me get past this? I'm 
> stuck since I really can't figure out how to create a FileAttribute. Am I 
> better off just using Apache commons or something like that?
>
> On Monday, September 27, 2010 7:20:04 PM UTC-5, ataggart wrote:
>>
>> The vararg at the end of the method is just syntactic sugar for an 
>> array, so the "add" method actually takes 4 args, the last being a 
>> Resource array.  The java compiler just replaces "missing" varargs 
>> with an empty array. 
>>
>> My guess is that the reflection mechanisms in the compiler just look 
>> at type/arity.  The Method object has a isVarArg() boolean, so that 
>> could be used to allow omitting varargs altogether.  That would need 
>> to be an enhancement to the clojure compiler, so I opened a ticket: 
>>
>>
>> https://www.assembla.com/spaces/clojure/tickets/440-java-method-calls-cannot-omit-varargs
>>  
>>
>>
>> On Sep 27, 1:16 pm, JonathanBelolo  wrote: 
>> > While toying with the Sesame2.3 library, I've come across the 
>> > following behavior for the first time. 
>> > 
>> > This is taken from the api doc for 
>> > org.openrdf.repository.base.RepositoryConnectionBase: 
>> > 
>> > add(Resource subject, URI predicate, Value object, Resource... 
>> > contexts) 
>> >   Adds a statement with the specified subject, predicate and 
>> > object to this repository, optionally to one or more named contexts. 
>> > 
>> > But apparently, Clojure seems to think the optional args are 
>> > mandatory... 
>> > 
>> > (.add con alice RDF/TYPE person) 
>> > 
>> > No matching method found: add for class 
>> > org.openrdf.repository.sail.SailRepositoryConnection 
>> >   [Thrown class java.lang.IllegalArgumentException] 
>> > 
>> > So I run 
>> > 
>> > (grep #".add" (.getMethods (.getClass con))) 
>> > 
>> > #> > 
>> org.openrdf.repository.base.RepositoryConnectionBase.add(org.openrdf.model. 
>> Resource,org.openrdf.model.URI,org.openrdf.model.Value,
>> org.openrdf.model.Re source[]) 
>> > throws org.openrdf.repository.RepositoryException>) 
>> > 
>> > Finally the following works... 
>> > 
>> > (.add con alice RDF/TYPE person (make-array Resource 1)) 
>> > nil 
>> > 
>> > Is this behavior normal? Are optional args mandatory when called with 
>> > interop? 
>> > 
>> > Thanks for your help :) 
>> > 
>> > Jonathan
>
>
> -- 
> 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 
> 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 
> 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 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

Re: Interop question concerning optional args

2012-12-10 Thread Andy Fingerhut
You can pass in a length 0 array of java.nio.file.attribute.FileAttribute's 
like so:

(java.nio.file.Files/createTempDirectory "mytempname" (make-array 
java.nio.file.attribute.FileAttribute 0))

Andy


On Dec 10, 2012, at 8:54 PM, Dave Kincaid wrote:

> I just came across this same problem while trying to use Java 7's 
> java.nio.file.Files.createTempDirectory() 
> (http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#createTempDirectory(java.lang.String,
>  java.nio.file.attribute.FileAttribute...))
> 
> Clojure won't let me just do (java.nio.file.Files/createTempDirectory "mydir")
> 
> It wants the FileAttribute argument. Can anyone help me get past this? I'm 
> stuck since I really can't figure out how to create a FileAttribute. Am I 
> better off just using Apache commons or something like that?
> 
> On Monday, September 27, 2010 7:20:04 PM UTC-5, ataggart wrote:
> The vararg at the end of the method is just syntactic sugar for an 
> array, so the "add" method actually takes 4 args, the last being a 
> Resource array.  The java compiler just replaces "missing" varargs 
> with an empty array. 
> 
> My guess is that the reflection mechanisms in the compiler just look 
> at type/arity.  The Method object has a isVarArg() boolean, so that 
> could be used to allow omitting varargs altogether.  That would need 
> to be an enhancement to the clojure compiler, so I opened a ticket: 
> 
> https://www.assembla.com/spaces/clojure/tickets/440-java-method-calls-cannot-omit-varargs
>  
> 
> 
> On Sep 27, 1:16 pm, JonathanBelolo  wrote: 
> > While toying with the Sesame2.3 library, I've come across the 
> > following behavior for the first time. 
> > 
> > This is taken from the api doc for 
> > org.openrdf.repository.base.RepositoryConnectionBase: 
> > 
> > add(Resource subject, URI predicate, Value object, Resource... 
> > contexts) 
> >   Adds a statement with the specified subject, predicate and 
> > object to this repository, optionally to one or more named contexts. 
> > 
> > But apparently, Clojure seems to think the optional args are 
> > mandatory... 
> > 
> > (.add con alice RDF/TYPE person) 
> > 
> > No matching method found: add for class 
> > org.openrdf.repository.sail.SailRepositoryConnection 
> >   [Thrown class java.lang.IllegalArgumentException] 
> > 
> > So I run 
> > 
> > (grep #".add" (.getMethods (.getClass con))) 
> > 
> > # > org.openrdf.repository.base.RepositoryConnectionBase.add(org.openrdf.model. 
> > Resource,org.openrdf.model.URI,org.openrdf.model.Value,org.openrdf.model.Re 
> > source[]) 
> > throws org.openrdf.repository.RepositoryException>) 
> > 
> > Finally the following works... 
> > 
> > (.add con alice RDF/TYPE person (make-array Resource 1)) 
> > nil 
> > 
> > Is this behavior normal? Are optional args mandatory when called with 
> > interop? 
> > 
> > Thanks for your help :) 
> > 
> > Jonathan
> 
> -- 
> 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 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

Re: Interop question concerning optional args

2012-12-10 Thread Dave Kincaid
I just came across this same problem while trying to use Java 7's 
java.nio.file.Files.createTempDirectory() 
(http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#createTempDirectory(java.lang.String,
 
java.nio.file.attribute.FileAttribute...))

Clojure won't let me just do (java.nio.file.Files/createTempDirectory 
"mydir")

It wants the FileAttribute argument. Can anyone help me get past this? I'm 
stuck since I really can't figure out how to create a FileAttribute. Am I 
better off just using Apache commons or something like that?

On Monday, September 27, 2010 7:20:04 PM UTC-5, ataggart wrote:
>
> The vararg at the end of the method is just syntactic sugar for an 
> array, so the "add" method actually takes 4 args, the last being a 
> Resource array.  The java compiler just replaces "missing" varargs 
> with an empty array. 
>
> My guess is that the reflection mechanisms in the compiler just look 
> at type/arity.  The Method object has a isVarArg() boolean, so that 
> could be used to allow omitting varargs altogether.  That would need 
> to be an enhancement to the clojure compiler, so I opened a ticket: 
>
>
> https://www.assembla.com/spaces/clojure/tickets/440-java-method-calls-cannot-omit-varargs
>  
>
>
> On Sep 27, 1:16 pm, JonathanBelolo  wrote: 
> > While toying with the Sesame2.3 library, I've come across the 
> > following behavior for the first time. 
> > 
> > This is taken from the api doc for 
> > org.openrdf.repository.base.RepositoryConnectionBase: 
> > 
> > add(Resource subject, URI predicate, Value object, Resource... 
> > contexts) 
> >   Adds a statement with the specified subject, predicate and 
> > object to this repository, optionally to one or more named contexts. 
> > 
> > But apparently, Clojure seems to think the optional args are 
> > mandatory... 
> > 
> > (.add con alice RDF/TYPE person) 
> > 
> > No matching method found: add for class 
> > org.openrdf.repository.sail.SailRepositoryConnection 
> >   [Thrown class java.lang.IllegalArgumentException] 
> > 
> > So I run 
> > 
> > (grep #".add" (.getMethods (.getClass con))) 
> > 
> > # > 
> org.openrdf.repository.base.RepositoryConnectionBase.add(org.openrdf.model. 
> Resource,org.openrdf.model.URI,org.openrdf.model.Value,
> org.openrdf.model.Re source[]) 
> > throws org.openrdf.repository.RepositoryException>) 
> > 
> > Finally the following works... 
> > 
> > (.add con alice RDF/TYPE person (make-array Resource 1)) 
> > nil 
> > 
> > Is this behavior normal? Are optional args mandatory when called with 
> > interop? 
> > 
> > Thanks for your help :) 
> > 
> > Jonathan

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

Re: Interop question concerning optional args

2010-09-27 Thread ataggart
The vararg at the end of the method is just syntactic sugar for an
array, so the "add" method actually takes 4 args, the last being a
Resource array.  The java compiler just replaces "missing" varargs
with an empty array.

My guess is that the reflection mechanisms in the compiler just look
at type/arity.  The Method object has a isVarArg() boolean, so that
could be used to allow omitting varargs altogether.  That would need
to be an enhancement to the clojure compiler, so I opened a ticket:

https://www.assembla.com/spaces/clojure/tickets/440-java-method-calls-cannot-omit-varargs


On Sep 27, 1:16 pm, JonathanBelolo  wrote:
> While toying with the Sesame2.3 library, I've come across the
> following behavior for the first time.
>
> This is taken from the api doc for
> org.openrdf.repository.base.RepositoryConnectionBase:
>
> add(Resource subject, URI predicate, Value object, Resource...
> contexts)
>           Adds a statement with the specified subject, predicate and
> object to this repository, optionally to one or more named contexts.
>
> But apparently, Clojure seems to think the optional args are
> mandatory...
>
> (.add con alice RDF/TYPE person)
>
> No matching method found: add for class
> org.openrdf.repository.sail.SailRepositoryConnection
>   [Thrown class java.lang.IllegalArgumentException]
>
> So I run
>
> (grep #".add" (.getMethods (.getClass con)))
>
> # org.openrdf.repository.base.RepositoryConnectionBase.add(org.openrdf.model. 
> Resource,org.openrdf.model.URI,org.openrdf.model.Value,org.openrdf.model.Re 
> source[])
> throws org.openrdf.repository.RepositoryException>)
>
> Finally the following works...
>
> (.add con alice RDF/TYPE person (make-array Resource 1))
> nil
>
> Is this behavior normal? Are optional args mandatory when called with
> interop?
>
> Thanks for your help :)
>
> Jonathan

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


Interop question concerning optional args

2010-09-27 Thread JonathanBelolo
While toying with the Sesame2.3 library, I've come across the
following behavior for the first time.

This is taken from the api doc for
org.openrdf.repository.base.RepositoryConnectionBase:

add(Resource subject, URI predicate, Value object, Resource...
contexts)
  Adds a statement with the specified subject, predicate and
object to this repository, optionally to one or more named contexts.

But apparently, Clojure seems to think the optional args are
mandatory...

(.add con alice RDF/TYPE person)

No matching method found: add for class
org.openrdf.repository.sail.SailRepositoryConnection
  [Thrown class java.lang.IllegalArgumentException]

So I run

(grep #".add" (.getMethods (.getClass con)))

#)

Finally the following works...

(.add con alice RDF/TYPE person (make-array Resource 1))
nil

Is this behavior normal? Are optional args mandatory when called with
interop?

Thanks for your help :)

Jonathan

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