*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.com>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 <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
>>> http://groups.google.com/**group/clojure?hl=en<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<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 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<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<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.
>
>
>



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


Reply via email to