2014-04-10 14:13 GMT+02:00 Di Xu <xudi...@gmail.com>: > Well, I'm not very familiar with buffer in java. But I think it's always > safe to call flush if you want to see the output immediately. >
The problem (in my opinion) is that you do not expect println and printf to behave differently. I would expect that both need a flush, or both do not need a flush. (The second is in my opinion the better of the two.) > 2014-04-10 19:50 GMT+08:00 Cecil Westerhof <cldwester...@gmail.com>: > >> 2014-04-10 13:40 GMT+02:00 Di Xu <xudi...@gmail.com>: >> >> there're three buffer mode in unix, line buffered, full buffered and no >>> buffered, if the output is terminal then it's default to line buffered. >>> That means it buffer the output until '\n' occurs, you can force output via >>> flush. >>> >> >> The printf format string is "%s: %s\n", so there is a newline, but it is >> not acted upon. >> >> >> >>> 2014-04-10 19:30 GMT+08:00 Cecil Westerhof <cldwester...@gmail.com>: >>> >>>> 2014-04-10 12:52 GMT+02:00 Kevin Ilchmann Jørgensen <kijm...@gmail.com> >>>> : >>>> >>>> I believe this is how the terminal behave. You can force an >>>>> (clojure.core/flush) >>>>> >>>> >>>> But why does println not behave this way? >>>> >>>> I think I stick to println for the moment. >>>> >>>> >>>> On Thu, Apr 10, 2014 at 12:34 PM, Cecil Westerhof < >>>>> cldwester...@gmail.com> wrote: >>>>> >>>>>> I have the following simple program: >>>>>> (def time-format (new java.text.SimpleDateFormat "hh:mm:ss")) >>>>>> >>>>>> (defn now [] >>>>>> (new java.util.GregorianCalendar)) >>>>>> >>>>>> (defn give-message [message] >>>>>> (printf >>>>>> "%s: %s\n" (. time-format format (. (now) getTime)) message)) >>>>>> >>>>>> (give-message "Start") >>>>>> (doseq [i (range 1 100000001)] >>>>>> (let [val (Math/sqrt i) >>>>>> diff (Math/abs (- (Math/pow val 2) (* val val)))] >>>>>> (when-not (< diff 1.5E-8) >>>>>> (println (format "Different for %d (%e)" i diff))))) >>>>>> (give-message "Stop") >>>>>> >>>>>> It does what it should, but I have a little problem with it: the >>>>>> output of give-message is only showed after terminating the program. Why >>>>>> is >>>>>> that? >>>>>> >>>>>> When changing give-message to: >>>>>> (defn give-message [message] >>>>>> (println (format "%s: %s" (. time-format format (. (now) >>>>>> getTime)) message))) >>>>>> >>>>>> the output is shown immediately. >>>>>> >>>>> -- Cecil Westerhof -- 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/d/optout.