Your loop/recur in your pt5 function is still not good. Take the time to 
read the loop/recur documentation and to understand examples.

A Clojure loop/recur is not really a loop like in other procedural 
It is more akin to a new function call at the `loop` point with new args 
provided by the `recur` call.

If you continue with the function call metaphor
The `loop` call defines 3 things:
  - the starting point of the function
  - the argument name of the function
  - the **initial values** of those arguments

When you need to call again that function with new arguments, you use 
`recur` with **new values**.
When you don't need to recur, well... dont call `recur` :) and just 
evaluate a last expression which is the result of the `loop` expression.


Le dimanche 26 décembre 2021 à 02:35:47 UTC+1, hank....@gmail.com a écrit :

> Thank for the answers.
> Trying to recur with '(recur (.read bfr))' resulted in a:
> Syntax error (UnsupportedOperationException) compiling recur at 
> (*cider-repl ~:localhost:41097(clj)*:237:9).
> Can only recur from tail position
> So I changed the code (see below). 
> And now it complains that a previous form that was working '(.append 
> etc..') doesn't and the same error remains. 
> user> (pt5 myfile)
> Execution error (IllegalArgumentException) at java.lang.Character/toChars 
> (Character.java:8572).
> Not a valid Unicode code point: 0xFFFFFFFF
> (defn pt5 [file]
>    (let [afr (FileReader. file); instances of FileReader, BufferedReader, 
> StringBuffer
>          bfr (BufferedReader. afr)
>          ct (StringBuilder.)
>          this-list (list afr bfr ct)]
>          ; (apply println this-list)
>          (loop [val (.read bfr)]
>                (when (not (= val -1))
>                  (.append ct (Character/toChars (.read bfr))))
>                (recur val))
>                 ; when finished...
>                 (.toString ct)))
> Harder then it seemed at first sight...
> -- Hank

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
For more options, visit this group at
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.
To view this discussion on the web visit 

Reply via email to