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, MBA
http://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