Sorry, I'm confused by the code sample.  I see several loops but no
corresponding recurs.

On Dec 30, 11:53 am, Alex Ott <alex...@gmail.com> wrote:
> Hello all
>
> I have strange problem with type inference in Clojure.  I have following
> code (simplified version of real code),
>
> (defn- process-char [#^InputStream istream]
>   (let [ch (.read istream)]
>     (if (= ch 10)
>        "AAA"
>        ch)))
>
> (defn- process-text [#^InputStream istream]
>     (loop [char (.read istream)]
>      (let [result (process-char istream)]
>       (cond
>           ;; .. some additional conditions
>          (string? result) (loop (.read istream))
>          (number? result) (loop result)
>       ...))))
>
> Main idea, that in some function, i read characters in sequence, and check
> their values, and in some conditions, i need to re-submit already readed
> character into loop, but when i use code above, i get following error:
>
> java.lang.IllegalArgumentException: recur arg for primitive local: char must 
> be matching primitive
>   [Thrown class java.lang.RuntimeException]
>
> but if i replace (loop result) with (.read istream), then it works without
> any problems
>
> I checked type of result, and it's Integer - same type, that 'char' var in
> loop will get after reading from stream.
>
> If need, i can submit somebody full test case
>
> --
> With best wishes, Alex Ott, MBAhttp://alexott.blogspot.com/       
> http://xtalk.msk.su/~ott/http://alexott-ru.blogspot.com/

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

Reply via email to