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 
   andy.fi...@gmail.comjavascript: 

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

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 
 andy.fi...@gmail.comjavascript:
  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 gist_file 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.comjavascript:
 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 

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 kan...@gmail.com 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 andy.fi...@gmail.comwrote:

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

 For more options, visit this group at
 

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 
  andy.fi...@gmail.comjavascript:
   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 gist_file 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 
 

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




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 andy.finger...@gmail.comwrote:

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

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.




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.
 
 
 
--
Softaddictslprefonta...@softaddicts.ca 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 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.comjavascript: 
  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/groups/opt_out. 
  
  
  
 -- 
 Softaddictslprefo...@softaddicts.ca javascript: 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 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 AtKaaZ
works for me:
= (*let [^java.io.BufferedReader a
(clojure.java.io/readerc:\\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 kan...@gmail.com 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=enhttp://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_outhttps://groups.google.com/groups/opt_out.

 
 
 
 --
 Softaddictslprefo...@**softaddicts.ca 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.