Re: Inflection on clojure.java.io/reader and writer

2013-02-06 Thread Valentin Golev

> Welcome to a world of values, not containers (the blue pieces can only 
fit in the blue 
> container, the red ones  you get the picture) or as Rich says places. 

I always thought that by places he means mutable identifiers; languages 
like Haskell have a lot of luck with type-checking immutable *values*. I 
don't see how appreciation for values over places leads to lack of 
type-checking.

On Wednesday, February 6, 2013 4:50:54 AM UTC+4, Luc wrote:
>
> You are not defining a type here. A type hint is just that... a hint so 
> the compiler 
> can optimize the code it generates to call the readLine method on this 
> specific 
> object class. 
>
> As an example, if io/reader returned an object of a different class at 
> runtime 
> than BufferedReader, it would not fail even if the hint says "expect an 
> object of this class". 
>
> The generated code testing that the object is not of the hinted class 
> would 
> resort to reflection on the object class to find if the readLine method 
> exists. 
> If not you will get the usual runtime error saying that the method does 
> not exists. 
>
> The Clojure compiler has no type checking equivalent to Java, C, ... 
> You can define stuff that is not even bound to a value, it would be hard 
> to type check on 
> these at compile time, no ? 
>
> Welcome to a world of values, not containers (the blue pieces can only fit 
> in the blue 
> container, the red ones  you get the picture) or as Rich says places. 
>
> Luc P. 
>
>
> > That's funny, I did exactly the same thing and wrote BufferedReader for 
> > both. DOH! 
> > 
> > Although I have no idea how the internals of type hinting is, I do think 
> > it's peculiar that there doesn't seem to be type error checking, even 
> > though we are explicitly "defining" the type. I would feel like it 
> should 
> > error, instead of falling back on reflection. 
> > 
> > Kanwei 
> > 
> > On Monday, February 4, 2013 12:36:51 PM UTC-5, AtKaaZ wrote: 
> > > 
> > > in other words: 
> > > this: 
> > > 
> > >   (let [in (clojure.java.io/reader src) 
> > > out (clojure.java.io/writer dest) 
> > > 
> > > 
> > > becomes this: 
> > > (let [^java.io.BufferedReader in (clojure.java.io/reader src) 
> > >^java.io.BufferedWriter out (clojure.java.io/writer dest) 
> > > 
> > > 
> > > and it works for me too. (but I wasted some time by having 
> BufferedReader 
> > > in both places) 
> > > 
> > > 
> > > On Mon, Feb 4, 2013 at 6:26 PM, Andy Fingerhut 
> > >  
>
> > > > wrote: 
> > > 
> > >> I don't have CCW Eclipse installed to test, but by saving that file 
> on my 
> > >> Mac (should also work on Linux) in a subdirectory "obj", and editing 
> it to 
> > >> add the ^java.io.BufferedReader in and ^java.io.BufferedWriter out 
> type 
> > >> hints as suggested by Luc P. earlier in this thread, I was able to 
> > >> eliminate the reflection warnings: 
> > >> 
> > >> % mkdir obj 
> > >> % cp  obj/solutions.clj 
> > >> 
> > >> # Original file without the type hints gives reflection warnings as 
> > >> expected 
> > >> 
> > >> % java -Dclojure.compile.path=./obj -cp clojure-1.4.0.jar:./obj 
> > >> clojure.lang.Compile solution 
> > >> Compiling solution to ./obj 
> > >> Reflection warning, solution.clj:38 - reference to field readLine 
> can't 
> > >> be resolved. 
> > >> Reflection warning, solution.clj:45 - reference to field readLine 
> can't 
> > >> be resolved. 
> > >> Reflection warning, solution.clj:63 - reference to field newLine 
> can't be 
> > >> resolved. 
> > >> Reflection warning, solution.clj:54 - reference to field newLine 
> can't be 
> > >> resolved. 
> > >> 
> > >> # Now I hand-edit obj/solutions.clj to add the type hints, and 
> recompile. 
> > >>  No reflection warnings. 
> > >> % java -Dclojure.compile.path=./obj -cp clojure-1.4.0.jar:./obj 
> > >> clojure.lang.Compile solution 
> > >> Compiling solution to ./obj 
> > >> % 
> > >> 
> > >> Perhaps you should try verifying that you added the type hints 
> correctly, 
> > >> saved the source file, recompiled the one you wanted to in CCW 
> Eclipse, etc. 
> > >> 
> > >> Andy 
> > >> 
> > >> 
> > >> On Feb 4, 2013, at 9:10 AM, Kanwei Li wrote: 
> > >> 
> > >> Hey Andy, 
> > >> 
> > >> Thanks for offering to help. Here's a gist: 
> > >> https://gist.github.com/4696105 
> > >> 
> > >> As you can see at the bottom, I want the main method to read/write to 
> > >> STDIN/STDOUT, but for testing, I want to read from files instead. 
> > >> 
> > >> This is what I get in both CCW Eclipse and nrepl: 
> > >> 
> > >> Reflection warning, NO_SOURCE_PATH:4 - reference to field readLine 
> can't 
> > >> be resolved. 
> > >> 
> > >> Reflection warning, NO_SOURCE_PATH:11 - reference to field readLine 
> can't 
> > >> be resolved. 
> > >> 
> > >> Reflection warning, NO_SOURCE_PATH:29 - reference to field newLine 
> can't 
> > >> be resolved. 
> > >> 
> > >> Reflection warning, NO_SOURCE_PATH:20 - reference to field newLine 
> can't 
> > >> be resolved. 
> > >> Thanks! 
> > >> 
> > >>

Re: Inflection on clojure.java.io/reader and writer

2013-02-05 Thread Softaddicts
You are not defining a type here. A type hint is just that... a hint so the 
compiler
can optimize the code it generates to call the readLine method on this specific
object class.

As an example, if io/reader returned an object of a different class at runtime
than BufferedReader, it would not fail even if the hint says "expect an object 
of this class".

The generated code testing that the object is not of the hinted class would
resort to reflection on the object class to find if the readLine method exists.
If not you will get the usual runtime error saying that the method does not 
exists.

The Clojure compiler has no type checking equivalent to Java, C, ...
You can define stuff that is not even bound to a value, it would be hard to 
type check on 
these at compile time, no ?

Welcome to a world of values, not containers (the blue pieces can only fit in 
the blue 
container, the red ones  you get the picture) or as Rich says places.

Luc P.


> That's funny, I did exactly the same thing and wrote BufferedReader for 
> both. DOH!
> 
> Although I have no idea how the internals of type hinting is, I do think 
> it's peculiar that there doesn't seem to be type error checking, even 
> though we are explicitly "defining" the type. I would feel like it should 
> error, instead of falling back on reflection.
> 
> Kanwei
> 
> On Monday, February 4, 2013 12:36:51 PM UTC-5, AtKaaZ wrote:
> >
> > in other words:
> > this:
> >
> >   (let [in (clojure.java.io/reader src)
> > out (clojure.java.io/writer dest)
> >
> >
> > becomes this:
> > (let [^java.io.BufferedReader in (clojure.java.io/reader src)
> >^java.io.BufferedWriter out (clojure.java.io/writer dest)
> >
> >
> > and it works for me too. (but I wasted some time by having BufferedReader 
> > in both places)
> >
> >
> > On Mon, Feb 4, 2013 at 6:26 PM, Andy Fingerhut 
> > 
> > > wrote:
> >
> >> I don't have CCW Eclipse installed to test, but by saving that file on my 
> >> Mac (should also work on Linux) in a subdirectory "obj", and editing it to 
> >> add the ^java.io.BufferedReader in and ^java.io.BufferedWriter out type 
> >> hints as suggested by Luc P. earlier in this thread, I was able to 
> >> eliminate the reflection warnings:
> >>
> >> % mkdir obj
> >> % cp  obj/solutions.clj
> >>
> >> # Original file without the type hints gives reflection warnings as 
> >> expected
> >>
> >> % java -Dclojure.compile.path=./obj -cp clojure-1.4.0.jar:./obj 
> >> clojure.lang.Compile solution
> >> Compiling solution to ./obj
> >> Reflection warning, solution.clj:38 - reference to field readLine can't 
> >> be resolved.
> >> Reflection warning, solution.clj:45 - reference to field readLine can't 
> >> be resolved.
> >> Reflection warning, solution.clj:63 - reference to field newLine can't be 
> >> resolved.
> >> Reflection warning, solution.clj:54 - reference to field newLine can't be 
> >> resolved.
> >>
> >> # Now I hand-edit obj/solutions.clj to add the type hints, and recompile. 
> >>  No reflection warnings.
> >> % java -Dclojure.compile.path=./obj -cp clojure-1.4.0.jar:./obj 
> >> clojure.lang.Compile solution
> >> Compiling solution to ./obj
> >> % 
> >>
> >> Perhaps you should try verifying that you added the type hints correctly, 
> >> saved the source file, recompiled the one you wanted to in CCW Eclipse, 
> >> etc.
> >>
> >> Andy
> >>
> >>
> >> On Feb 4, 2013, at 9:10 AM, Kanwei Li wrote:
> >>
> >> Hey Andy,
> >>
> >> Thanks for offering to help. Here's a gist: 
> >> https://gist.github.com/4696105
> >>
> >> As you can see at the bottom, I want the main method to read/write to 
> >> STDIN/STDOUT, but for testing, I want to read from files instead.
> >>
> >> This is what I get in both CCW Eclipse and nrepl:
> >>
> >> Reflection warning, NO_SOURCE_PATH:4 - reference to field readLine can't 
> >> be resolved.
> >>
> >> Reflection warning, NO_SOURCE_PATH:11 - reference to field readLine can't 
> >> be resolved.
> >>
> >> Reflection warning, NO_SOURCE_PATH:29 - reference to field newLine can't 
> >> be resolved.
> >>
> >> Reflection warning, NO_SOURCE_PATH:20 - reference to field newLine can't 
> >> be resolved.
> >> Thanks!
> >>
> >> On Sunday, February 3, 2013 4:38:38 PM UTC-5, Andy Fingerhut wrote:
> >>>
> >>> Can you post a larger chunk of code for us to examine, perhaps on github 
> >>> or as a gist if it is over 30 lines of code or so?  Many of us have had 
> >>> good success with eliminating reflection using type hints, so it should 
> >>> be 
> >>> possible to make it work.
> >>>
> >>> Andy
> >>>
> >>> On Feb 3, 2013, at 12:50 PM, Kanwei Li wrote:
> >>>
> >>> Unfortunately it doesn't work.
> >>>
> >>> Reflection warning, NO_SOURCE_PATH:20 - call to write can't be resolved.
> >>>
> >>> Reflection warning, NO_SOURCE_PATH:21 - reference to field newLine can't 
> >>> be resolved.
> >>>
> >>> On Sunday, February 3, 2013 2:35:23 PM UTC-5, Luc wrote:
> 
>  Why not add type hints like this ? 
> 
>  (let [^java.io.BufferedReader in ..

Re: Inflection on clojure.java.io/reader and writer

2013-02-05 Thread AtKaaZ
*I would love it if it would be* at least a warning if not even better *an
error*, but I feel it wouldn't be idiomatic clojure to err, but to warn
would maybe be accepted...


On Tue, Feb 5, 2013 at 6:34 PM, Kanwei Li  wrote:

> That's funny, I did exactly the same thing and wrote BufferedReader for
> both. DOH!
>
> Although I have no idea how the internals of type hinting is, I do think
> it's peculiar that there doesn't seem to be type error checking, even
> though we are explicitly "defining" the type. I would feel like it should
> error, instead of falling back on reflection.
>
> Kanwei
>
>
> On Monday, February 4, 2013 12:36:51 PM UTC-5, AtKaaZ wrote:
>
>> in other words:
>> this:
>>
>>   (let [in (clojure.java.io/reader src)
>> out (clojure.java.io/writer dest)
>>
>>
>> becomes this:
>> (let [^java.io.BufferedReader in (clojure.java.io/reader src)
>>^java.io.BufferedWriter out (clojure.java.io/writer dest)
>>
>>
>> and it works for me too. (but I wasted some time by having BufferedReader
>> in both places)
>>
>>
>> On Mon, Feb 4, 2013 at 6:26 PM, Andy Fingerhut wrote:
>>
>>> I don't have CCW Eclipse installed to test, but by saving that file on
>>> my Mac (should also work on Linux) in a subdirectory "obj", and editing it
>>> to add the ^java.io.BufferedReader in and ^java.io.BufferedWriter out type
>>> hints as suggested by Luc P. earlier in this thread, I was able to
>>> eliminate the reflection warnings:
>>>
>>> % mkdir obj
>>> % cp  obj/solutions.clj
>>>
>>> # Original file without the type hints gives reflection warnings as
>>> expected
>>>
>>> % java -Dclojure.compile.path=./obj -cp clojure-1.4.0.jar:./obj
>>> clojure.lang.Compile solution
>>> Compiling solution to ./obj
>>> Reflection warning, solution.clj:38 - reference to field readLine can't
>>> be resolved.
>>> Reflection warning, solution.clj:45 - reference to field readLine can't
>>> be resolved.
>>> Reflection warning, solution.clj:63 - reference to field newLine can't
>>> be resolved.
>>> Reflection warning, solution.clj:54 - reference to field newLine can't
>>> be resolved.
>>>
>>> # Now I hand-edit obj/solutions.clj to add the type hints, and
>>> recompile.  No reflection warnings.
>>> % java -Dclojure.compile.path=./obj -cp clojure-1.4.0.jar:./obj
>>> clojure.lang.Compile solution
>>> Compiling solution to ./obj
>>> %
>>>
>>> Perhaps you should try verifying that you added the type hints
>>> correctly, saved the source file, recompiled the one you wanted to in CCW
>>> Eclipse, etc.
>>>
>>> Andy
>>>
>>>
>>> On Feb 4, 2013, at 9:10 AM, Kanwei Li wrote:
>>>
>>> Hey Andy,
>>>
>>> Thanks for offering to help. Here's a gist: https://gist.github.com/**
>>> 4696105 
>>>
>>> As you can see at the bottom, I want the main method to read/write to
>>> STDIN/STDOUT, but for testing, I want to read from files instead.
>>>
>>> This is what I get in both CCW Eclipse and nrepl:
>>>
>>> Reflection warning, NO_SOURCE_PATH:4 - reference to field readLine can't
>>> be resolved.
>>>
>>> Reflection warning, NO_SOURCE_PATH:11 - reference to field readLine
>>> can't be resolved.
>>>
>>> Reflection warning, NO_SOURCE_PATH:29 - reference to field newLine can't
>>> be resolved.
>>>
>>> Reflection warning, NO_SOURCE_PATH:20 - reference to field newLine can't
>>> be resolved.
>>> Thanks!
>>>
>>> On Sunday, February 3, 2013 4:38:38 PM UTC-5, Andy Fingerhut wrote:

 Can you post a larger chunk of code for us to examine, perhaps on
 github or as a gist if it is over 30 lines of code or so?  Many of us have
 had good success with eliminating reflection using type hints, so it should
 be possible to make it work.

 Andy

 On Feb 3, 2013, at 12:50 PM, Kanwei Li wrote:

 Unfortunately it doesn't work.

 Reflection warning, NO_SOURCE_PATH:20 - call to write can't be resolved.

 Reflection warning, NO_SOURCE_PATH:21 - reference to field newLine
 can't be resolved.

 On Sunday, February 3, 2013 2:35:23 PM UTC-5, Luc wrote:
>
> Why not add type hints like this ?
>
> (let [^java.io.BufferedReader in 
>^java.io.BufferedWriter out ...]
> ..
>
> Luc P.
>
> > Hey guys,
> >
> > I'm trying to read a lot of data, sometimes from *in* and sometimes
> from a
> > file. I extensively use the native .write and .read java methods.
> >
> > According to the clojure doc for reader, it says that "Default
> > implementations always return a BufferedReader". However, when I
> write,
> >
> > (*defn* solve [src dest]
> >
> >   (*let* [in (clojure.java.io/reader src)
> >
> > out (clojure.java.io/writer dest)
> >
> > I get a bunch of reflection warnings on .read and .write, and most
> of the
> > running time is spent on reflection. AFAIK you can't type hint a
> (let)
> > construct, so what should I do here?
> >
> > Thanks!


>

Re: Inflection on clojure.java.io/reader and writer

2013-02-05 Thread Kanwei Li
That's funny, I did exactly the same thing and wrote BufferedReader for 
both. DOH!

Although I have no idea how the internals of type hinting is, I do think 
it's peculiar that there doesn't seem to be type error checking, even 
though we are explicitly "defining" the type. I would feel like it should 
error, instead of falling back on reflection.

Kanwei

On Monday, February 4, 2013 12:36:51 PM UTC-5, AtKaaZ wrote:
>
> in other words:
> this:
>
>   (let [in (clojure.java.io/reader src)
> out (clojure.java.io/writer dest)
>
>
> becomes this:
> (let [^java.io.BufferedReader in (clojure.java.io/reader src)
>^java.io.BufferedWriter out (clojure.java.io/writer dest)
>
>
> and it works for me too. (but I wasted some time by having BufferedReader 
> in both places)
>
>
> On Mon, Feb 4, 2013 at 6:26 PM, Andy Fingerhut 
> 
> > wrote:
>
>> I don't have CCW Eclipse installed to test, but by saving that file on my 
>> Mac (should also work on Linux) in a subdirectory "obj", and editing it to 
>> add the ^java.io.BufferedReader in and ^java.io.BufferedWriter out type 
>> hints as suggested by Luc P. earlier in this thread, I was able to 
>> eliminate the reflection warnings:
>>
>> % mkdir obj
>> % cp  obj/solutions.clj
>>
>> # Original file without the type hints gives reflection warnings as 
>> expected
>>
>> % java -Dclojure.compile.path=./obj -cp clojure-1.4.0.jar:./obj 
>> clojure.lang.Compile solution
>> Compiling solution to ./obj
>> Reflection warning, solution.clj:38 - reference to field readLine can't 
>> be resolved.
>> Reflection warning, solution.clj:45 - reference to field readLine can't 
>> be resolved.
>> Reflection warning, solution.clj:63 - reference to field newLine can't be 
>> resolved.
>> Reflection warning, solution.clj:54 - reference to field newLine can't be 
>> resolved.
>>
>> # Now I hand-edit obj/solutions.clj to add the type hints, and recompile. 
>>  No reflection warnings.
>> % java -Dclojure.compile.path=./obj -cp clojure-1.4.0.jar:./obj 
>> clojure.lang.Compile solution
>> Compiling solution to ./obj
>> % 
>>
>> Perhaps you should try verifying that you added the type hints correctly, 
>> saved the source file, recompiled the one you wanted to in CCW Eclipse, etc.
>>
>> Andy
>>
>>
>> On Feb 4, 2013, at 9:10 AM, Kanwei Li wrote:
>>
>> Hey Andy,
>>
>> Thanks for offering to help. Here's a gist: 
>> https://gist.github.com/4696105
>>
>> As you can see at the bottom, I want the main method to read/write to 
>> STDIN/STDOUT, but for testing, I want to read from files instead.
>>
>> This is what I get in both CCW Eclipse and nrepl:
>>
>> Reflection warning, NO_SOURCE_PATH:4 - reference to field readLine can't 
>> be resolved.
>>
>> Reflection warning, NO_SOURCE_PATH:11 - reference to field readLine can't 
>> be resolved.
>>
>> Reflection warning, NO_SOURCE_PATH:29 - reference to field newLine can't 
>> be resolved.
>>
>> Reflection warning, NO_SOURCE_PATH:20 - reference to field newLine can't 
>> be resolved.
>> Thanks!
>>
>> On Sunday, February 3, 2013 4:38:38 PM UTC-5, Andy Fingerhut wrote:
>>>
>>> Can you post a larger chunk of code for us to examine, perhaps on github 
>>> or as a gist if it is over 30 lines of code or so?  Many of us have had 
>>> good success with eliminating reflection using type hints, so it should be 
>>> possible to make it work.
>>>
>>> Andy
>>>
>>> On Feb 3, 2013, at 12:50 PM, Kanwei Li wrote:
>>>
>>> Unfortunately it doesn't work.
>>>
>>> Reflection warning, NO_SOURCE_PATH:20 - call to write can't be resolved.
>>>
>>> Reflection warning, NO_SOURCE_PATH:21 - reference to field newLine can't 
>>> be resolved.
>>>
>>> On Sunday, February 3, 2013 2:35:23 PM UTC-5, Luc wrote:

 Why not add type hints like this ? 

 (let [^java.io.BufferedReader in  
^java.io.BufferedWriter out ...] 
 .. 

 Luc P. 

 > Hey guys, 
 > 
 > I'm trying to read a lot of data, sometimes from *in* and sometimes 
 from a 
 > file. I extensively use the native .write and .read java methods. 
 > 
 > According to the clojure doc for reader, it says that "Default 
 > implementations always return a BufferedReader". However, when I 
 write, 
 > 
 > (*defn* solve [src dest] 
 > 
 >   (*let* [in (clojure.java.io/reader src) 
 > 
 > out (clojure.java.io/writer dest) 
 > 
 > I get a bunch of reflection warnings on .read and .write, and most of 
 the 
 > running time is spent on reflection. AFAIK you can't type hint a 
 (let) 
 > construct, so what should I do here? 
 > 
 > Thanks! 
>>>
>>>
>> -- 
>> -- 
>> 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 
>> F

Re: Inflection on clojure.java.io/reader and writer

2013-02-04 Thread AtKaaZ
in other words:
this:

  (let [in (clojure.java.io/reader src)
out (clojure.java.io/writer dest)


becomes this:
(let [^java.io.BufferedReader in (clojure.java.io/reader src)
   ^java.io.BufferedWriter out (clojure.java.io/writer dest)


and it works for me too. (but I wasted some time by having BufferedReader
in both places)


On Mon, Feb 4, 2013 at 6:26 PM, Andy Fingerhut wrote:

> I don't have CCW Eclipse installed to test, but by saving that file on my
> Mac (should also work on Linux) in a subdirectory "obj", and editing it to
> add the ^java.io.BufferedReader in and ^java.io.BufferedWriter out type
> hints as suggested by Luc P. earlier in this thread, I was able to
> eliminate the reflection warnings:
>
> % mkdir obj
> % cp  obj/solutions.clj
>
> # Original file without the type hints gives reflection warnings as
> expected
>
> % java -Dclojure.compile.path=./obj -cp clojure-1.4.0.jar:./obj
> clojure.lang.Compile solution
> Compiling solution to ./obj
> Reflection warning, solution.clj:38 - reference to field readLine can't be
> resolved.
> Reflection warning, solution.clj:45 - reference to field readLine can't be
> resolved.
> Reflection warning, solution.clj:63 - reference to field newLine can't be
> resolved.
> Reflection warning, solution.clj:54 - reference to field newLine can't be
> resolved.
>
> # Now I hand-edit obj/solutions.clj to add the type hints, and recompile.
>  No reflection warnings.
> % java -Dclojure.compile.path=./obj -cp clojure-1.4.0.jar:./obj
> clojure.lang.Compile solution
> Compiling solution to ./obj
> %
>
> Perhaps you should try verifying that you added the type hints correctly,
> saved the source file, recompiled the one you wanted to in CCW Eclipse, etc.
>
> Andy
>
>
> On Feb 4, 2013, at 9:10 AM, Kanwei Li wrote:
>
> Hey Andy,
>
> Thanks for offering to help. Here's a gist:
> https://gist.github.com/4696105
>
> As you can see at the bottom, I want the main method to read/write to
> STDIN/STDOUT, but for testing, I want to read from files instead.
>
> This is what I get in both CCW Eclipse and nrepl:
>
> Reflection warning, NO_SOURCE_PATH:4 - reference to field readLine can't
> be resolved.
>
> Reflection warning, NO_SOURCE_PATH:11 - reference to field readLine can't
> be resolved.
>
> Reflection warning, NO_SOURCE_PATH:29 - reference to field newLine can't
> be resolved.
>
> Reflection warning, NO_SOURCE_PATH:20 - reference to field newLine can't
> be resolved.
> Thanks!
>
> On Sunday, February 3, 2013 4:38:38 PM UTC-5, Andy Fingerhut wrote:
>>
>> Can you post a larger chunk of code for us to examine, perhaps on github
>> or as a gist if it is over 30 lines of code or so?  Many of us have had
>> good success with eliminating reflection using type hints, so it should be
>> possible to make it work.
>>
>> Andy
>>
>> On Feb 3, 2013, at 12:50 PM, Kanwei Li wrote:
>>
>> Unfortunately it doesn't work.
>>
>> Reflection warning, NO_SOURCE_PATH:20 - call to write can't be resolved.
>>
>> Reflection warning, NO_SOURCE_PATH:21 - reference to field newLine can't
>> be resolved.
>>
>> On Sunday, February 3, 2013 2:35:23 PM UTC-5, Luc wrote:
>>>
>>> Why not add type hints like this ?
>>>
>>> (let [^java.io.BufferedReader in 
>>>^java.io.BufferedWriter out ...]
>>> ..
>>>
>>> Luc P.
>>>
>>> > Hey guys,
>>> >
>>> > I'm trying to read a lot of data, sometimes from *in* and sometimes
>>> from a
>>> > file. I extensively use the native .write and .read java methods.
>>> >
>>> > According to the clojure doc for reader, it says that "Default
>>> > implementations always return a BufferedReader". However, when I
>>> write,
>>> >
>>> > (*defn* solve [src dest]
>>> >
>>> >   (*let* [in (clojure.java.io/reader src)
>>> >
>>> > out (clojure.java.io/writer dest)
>>> >
>>> > I get a bunch of reflection warnings on .read and .write, and most of
>>> the
>>> > running time is spent on reflection. AFAIK you can't type hint a (let)
>>> > construct, so what should I do here?
>>> >
>>> > Thanks!
>>
>>
> --
> --
> 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.
>
>
>
>
>  --
> --
> 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 

Re: Inflection on clojure.java.io/reader and writer

2013-02-04 Thread Andy Fingerhut
I don't have CCW Eclipse installed to test, but by saving that file on my Mac 
(should also work on Linux) in a subdirectory "obj", and editing it to add the 
^java.io.BufferedReader in and ^java.io.BufferedWriter out type hints as 
suggested by Luc P. earlier in this thread, I was able to eliminate the 
reflection warnings:

% mkdir obj
% cp  obj/solutions.clj

# Original file without the type hints gives reflection warnings as expected

% java -Dclojure.compile.path=./obj -cp clojure-1.4.0.jar:./obj 
clojure.lang.Compile solution
Compiling solution to ./obj
Reflection warning, solution.clj:38 - reference to field readLine can't be 
resolved.
Reflection warning, solution.clj:45 - reference to field readLine can't be 
resolved.
Reflection warning, solution.clj:63 - reference to field newLine can't be 
resolved.
Reflection warning, solution.clj:54 - reference to field newLine can't be 
resolved.

# Now I hand-edit obj/solutions.clj to add the type hints, and recompile.  No 
reflection warnings.
% java -Dclojure.compile.path=./obj -cp clojure-1.4.0.jar:./obj 
clojure.lang.Compile solution
Compiling solution to ./obj
% 

Perhaps you should try verifying that you added the type hints correctly, saved 
the source file, recompiled the one you wanted to in CCW Eclipse, etc.

Andy


On Feb 4, 2013, at 9:10 AM, Kanwei Li wrote:

> Hey Andy,
> 
> Thanks for offering to help. Here's a gist: https://gist.github.com/4696105
> 
> As you can see at the bottom, I want the main method to read/write to 
> STDIN/STDOUT, but for testing, I want to read from files instead.
> 
> This is what I get in both CCW Eclipse and nrepl:
> 
> Reflection warning, NO_SOURCE_PATH:4 - reference to field readLine can't be 
> resolved.
> 
> Reflection warning, NO_SOURCE_PATH:11 - reference to field readLine can't be 
> resolved.
> 
> Reflection warning, NO_SOURCE_PATH:29 - reference to field newLine can't be 
> resolved.
> 
> Reflection warning, NO_SOURCE_PATH:20 - reference to field newLine can't be 
> resolved.
> 
> Thanks!
> 
> On Sunday, February 3, 2013 4:38:38 PM UTC-5, Andy Fingerhut wrote:
> Can you post a larger chunk of code for us to examine, perhaps on github or 
> as a gist if it is over 30 lines of code or so?  Many of us have had good 
> success with eliminating reflection using type hints, so it should be 
> possible to make it work.
> 
> Andy
> 
> On Feb 3, 2013, at 12:50 PM, Kanwei Li wrote:
> 
>> Unfortunately it doesn't work.
>> 
>> Reflection warning, NO_SOURCE_PATH:20 - call to write can't be resolved.
>> 
>> Reflection warning, NO_SOURCE_PATH:21 - reference to field newLine can't be 
>> resolved.
>> 
>> 
>> On Sunday, February 3, 2013 2:35:23 PM UTC-5, Luc wrote:
>> Why not add type hints like this ? 
>> 
>> (let [^java.io.BufferedReader in  
>>^java.io.BufferedWriter out ...] 
>> .. 
>> 
>> Luc P. 
>> 
>> > Hey guys, 
>> > 
>> > I'm trying to read a lot of data, sometimes from *in* and sometimes from a 
>> > file. I extensively use the native .write and .read java methods. 
>> > 
>> > According to the clojure doc for reader, it says that "Default 
>> > implementations always return a BufferedReader". However, when I write, 
>> > 
>> > (*defn* solve [src dest] 
>> > 
>> >   (*let* [in (clojure.java.io/reader src) 
>> > 
>> > out (clojure.java.io/writer dest) 
>> > 
>> > I get a bunch of reflection warnings on .read and .write, and most of the 
>> > running time is spent on reflection. AFAIK you can't type hint a (let) 
>> > construct, so what should I do here? 
>> > 
>> > Thanks! 
> 
> 
> -- 
> -- 
> 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.
>  
>  

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

Re: Inflection on clojure.java.io/reader and writer

2013-02-04 Thread Kanwei Li
Hey Andy,

Thanks for offering to help. Here's a gist: https://gist.github.com/4696105

As you can see at the bottom, I want the main method to read/write to 
STDIN/STDOUT, but for testing, I want to read from files instead.

This is what I get in both CCW Eclipse and nrepl:

Reflection warning, NO_SOURCE_PATH:4 - reference to field readLine can't be 
resolved.

Reflection warning, NO_SOURCE_PATH:11 - reference to field readLine can't 
be resolved.

Reflection warning, NO_SOURCE_PATH:29 - reference to field newLine can't be 
resolved.

Reflection warning, NO_SOURCE_PATH:20 - reference to field newLine can't be 
resolved.
Thanks!

On Sunday, February 3, 2013 4:38:38 PM UTC-5, Andy Fingerhut wrote:
>
> Can you post a larger chunk of code for us to examine, perhaps on github 
> or as a gist if it is over 30 lines of code or so?  Many of us have had 
> good success with eliminating reflection using type hints, so it should be 
> possible to make it work.
>
> Andy
>
> On Feb 3, 2013, at 12:50 PM, Kanwei Li wrote:
>
> Unfortunately it doesn't work.
>
> Reflection warning, NO_SOURCE_PATH:20 - call to write can't be resolved.
>
> Reflection warning, NO_SOURCE_PATH:21 - reference to field newLine can't 
> be resolved.
>
> On Sunday, February 3, 2013 2:35:23 PM UTC-5, Luc wrote:
>>
>> Why not add type hints like this ? 
>>
>> (let [^java.io.BufferedReader in  
>>^java.io.BufferedWriter out ...] 
>> .. 
>>
>> Luc P. 
>>
>> > Hey guys, 
>> > 
>> > I'm trying to read a lot of data, sometimes from *in* and sometimes 
>> from a 
>> > file. I extensively use the native .write and .read java methods. 
>> > 
>> > According to the clojure doc for reader, it says that "Default 
>> > implementations always return a BufferedReader". However, when I write, 
>> > 
>> > (*defn* solve [src dest] 
>> > 
>> >   (*let* [in (clojure.java.io/reader src) 
>> > 
>> > out (clojure.java.io/writer dest) 
>> > 
>> > I get a bunch of reflection warnings on .read and .write, and most of 
>> the 
>> > running time is spent on reflection. AFAIK you can't type hint a (let) 
>> > construct, so what should I do here? 
>> > 
>> > Thanks! 
>
>

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




Re: Inflection on clojure.java.io/reader and writer

2013-02-03 Thread AtKaaZ
works for me:
=> (*let [^java.io.BufferedReader a
(clojure.java.io/reader"c:\\windows\\setupact.log")] (println (. a
readLine)))
*
AudMig: No audio endpoint migration settings found 0x2
nil

=> *(let [a (clojure.java.io/reader "c:\\windows\\setupact.log")] (println
(. a readLine)))*
Reflection warning, NO_SOURCE_PATH:1:72 - reference to field readLine can't
be resolved.
AudMig: No audio endpoint migration settings found 0x2
nil

=> **clojure-version**
{:major 1, :minor 5, :incremental 0, :qualifier "RC4"}



On Sun, Feb 3, 2013 at 9:50 PM, Kanwei Li  wrote:

> Unfortunately it doesn't work.
>
> Reflection warning, NO_SOURCE_PATH:20 - call to write can't be resolved.
>
> Reflection warning, NO_SOURCE_PATH:21 - reference to field newLine can't
> be resolved.
>
> On Sunday, February 3, 2013 2:35:23 PM UTC-5, Luc wrote:
>
>> Why not add type hints like this ?
>>
>> (let [^java.io.BufferedReader in 
>>^java.io.BufferedWriter out ...]
>> ..
>>
>> Luc P.
>>
>> > Hey guys,
>> >
>> > I'm trying to read a lot of data, sometimes from *in* and sometimes
>> from a
>> > file. I extensively use the native .write and .read java methods.
>> >
>> > According to the clojure doc for reader, it says that "Default
>> > implementations always return a BufferedReader". However, when I write,
>> >
>> > (*defn* solve [src dest]
>> >
>> >   (*let* [in (clojure.java.io/reader src)
>> >
>> > out (clojure.java.io/writer dest)
>> >
>> > I get a bunch of reflection warnings on .read and .write, and most of
>> the
>> > running time is spent on reflection. AFAIK you can't type hint a (let)
>> > construct, so what should I do here?
>> >
>> > Thanks!
>> >
>> > --
>> > --
>> > 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 unsubscribe from this group and stop receiving emails from it, send
>> an email to clojure+u...@**googlegroups.com.
>> > For more options, visit 
>> > https://groups.google.com/**groups/opt_out.
>>
>> >
>> >
>> >
>> --
>> Softaddicts sent by ibisMail from my ipad!
>>
>  --
> --
> 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.
>
>
>



-- 
Please correct me if I'm wrong or incomplete,
even if you think I'll subconsciously hate 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/groups/opt_out.




Re: Inflection on clojure.java.io/reader and writer

2013-02-03 Thread Andy Fingerhut
Can you post a larger chunk of code for us to examine, perhaps on github or as 
a gist if it is over 30 lines of code or so?  Many of us have had good success 
with eliminating reflection using type hints, so it should be possible to make 
it work.

Andy

On Feb 3, 2013, at 12:50 PM, Kanwei Li wrote:

> Unfortunately it doesn't work.
> 
> Reflection warning, NO_SOURCE_PATH:20 - call to write can't be resolved.
> 
> Reflection warning, NO_SOURCE_PATH:21 - reference to field newLine can't be 
> resolved.
> 
> 
> On Sunday, February 3, 2013 2:35:23 PM UTC-5, Luc wrote:
> Why not add type hints like this ? 
> 
> (let [^java.io.BufferedReader in  
>^java.io.BufferedWriter out ...] 
> .. 
> 
> Luc P. 
> 
> > Hey guys, 
> > 
> > I'm trying to read a lot of data, sometimes from *in* and sometimes from a 
> > file. I extensively use the native .write and .read java methods. 
> > 
> > According to the clojure doc for reader, it says that "Default 
> > implementations always return a BufferedReader". However, when I write, 
> > 
> > (*defn* solve [src dest] 
> > 
> >   (*let* [in (clojure.java.io/reader src) 
> > 
> > out (clojure.java.io/writer dest) 
> > 
> > I get a bunch of reflection warnings on .read and .write, and most of the 
> > running time is spent on reflection. AFAIK you can't type hint a (let) 
> > construct, so what should I do here? 
> > 
> > Thanks! 

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




Re: Inflection on clojure.java.io/reader and writer

2013-02-03 Thread Kanwei Li
Unfortunately it doesn't work.

Reflection warning, NO_SOURCE_PATH:20 - call to write can't be resolved.

Reflection warning, NO_SOURCE_PATH:21 - reference to field newLine can't be 
resolved.

On Sunday, February 3, 2013 2:35:23 PM UTC-5, Luc wrote:
>
> Why not add type hints like this ? 
>
> (let [^java.io.BufferedReader in  
>^java.io.BufferedWriter out ...] 
> .. 
>
> Luc P. 
>
> > Hey guys, 
> > 
> > I'm trying to read a lot of data, sometimes from *in* and sometimes from 
> a 
> > file. I extensively use the native .write and .read java methods. 
> > 
> > According to the clojure doc for reader, it says that "Default 
> > implementations always return a BufferedReader". However, when I write, 
> > 
> > (*defn* solve [src dest] 
> > 
> >   (*let* [in (clojure.java.io/reader src) 
> > 
> > out (clojure.java.io/writer dest) 
> > 
> > I get a bunch of reflection warnings on .read and .write, and most of 
> the 
> > running time is spent on reflection. AFAIK you can't type hint a (let) 
> > construct, so what should I do here? 
> > 
> > Thanks! 
> > 
> > -- 
> > -- 
> > 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 unsubscribe from this group and stop receiving emails from it, send 
> an email to clojure+u...@googlegroups.com . 
> > For more options, visit https://groups.google.com/groups/opt_out. 
> > 
> > 
> > 
> -- 
> Softaddicts> sent by ibisMail from 
> my ipad! 
>

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




Re: Inflection on clojure.java.io/reader and writer

2013-02-03 Thread Softaddicts
Why not add type hints like this ?

(let [^java.io.BufferedReader in 
   ^java.io.BufferedWriter out ...]
..

Luc P.

> Hey guys,
> 
> I'm trying to read a lot of data, sometimes from *in* and sometimes from a 
> file. I extensively use the native .write and .read java methods.
> 
> According to the clojure doc for reader, it says that "Default 
> implementations always return a BufferedReader". However, when I write, 
> 
> (*defn* solve [src dest]
> 
>   (*let* [in (clojure.java.io/reader src)
> 
> out (clojure.java.io/writer dest)
> 
> I get a bunch of reflection warnings on .read and .write, and most of the 
> running time is spent on reflection. AFAIK you can't type hint a (let) 
> construct, so what should I do here?
> 
> Thanks!
> 
> -- 
> -- 
> 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.
> 
> 
> 
--
Softaddicts sent by ibisMail from my ipad!

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




Inflection on clojure.java.io/reader and writer

2013-02-03 Thread Kanwei Li
Hey guys,

I'm trying to read a lot of data, sometimes from *in* and sometimes from a 
file. I extensively use the native .write and .read java methods.

According to the clojure doc for reader, it says that "Default 
implementations always return a BufferedReader". However, when I write, 

(*defn* solve [src dest]

  (*let* [in (clojure.java.io/reader src)

out (clojure.java.io/writer dest)

I get a bunch of reflection warnings on .read and .write, and most of the 
running time is spent on reflection. AFAIK you can't type hint a (let) 
construct, so what should I do here?

Thanks!

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