Yeah, this is definitely an annoying bug. On Thursday, April 10, 2014 8:03:02 PM UTC+8, Kevin Ilchmann Jørgensen wrote: > > nREPL server started on port 53667 on host 127.0.0.1 > REPL-y 0.3.0 > Clojure 1.5.1 > Docs: (doc function-name-here) > (find-doc "part-of-name-here") > Source: (source function-name-here) > Javadoc: (javadoc java-object-or-class-here) > Exit: Control+D or (exit) or (quit) > Results: Stored in vars *1, *2, *3, an exception in *e > > *user=> (source println)* > (defn println > "Same as print followed by (newline)" > {:added "1.0" > :static true} > [& more] > (binding [*print-readably* nil] > (apply prn more))) > nil > *user=> (source prn)* > (defn prn > "Same as pr followed by (newline). Observes *flush-on-newline*" > {:added "1.0" > :static true} > [& more] > (apply pr more) > (newline) > (when *flush-on-newline* > (flush))) > nil > *user=> (source printf)* > (defn printf > "Prints formatted output, as per format" > {:added "1.0" > :static true} > [fmt & args] > (print (apply format fmt args))) > nil > *user=> (source print)* > (defn print > "Prints the object(s) to the output stream that is the current value > of *out*. print and println produce output for human consumption." > {:added "1.0" > :static true} > [& more] > (binding [*print-readably* nil] > (apply pr more))) > nil > *user=> (source pr)* > (defn pr > "Prints the object(s) to the output stream that is the current value > of *out*. Prints the object(s), separated by spaces if there is > more than one. By default, pr and prn print in a way that objects > can be read by the reader" > {:dynamic true > :added "1.0"} > ([] nil) > ([x] > (pr-on x *out*)) > ([x & more] > (pr x) > (. *out* (append \space)) > (if-let [nmore (next more)] > (recur (first more) nmore) > (apply pr more)))) > nil > *user=> *flush-on-newline** > true > user=> > > > On Thu, Apr 10, 2014 at 1:50 PM, Cecil Westerhof <cldwes...@gmail.com > <javascript:>> wrote: > >> 2014-04-10 13:40 GMT+02:00 Di Xu <xud...@gmail.com <javascript:>>: >> >> 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 <cldwes...@gmail.com >>> <javascript:>>: >>> >>>> 2014-04-10 12:52 GMT+02:00 Kevin Ilchmann Jørgensen <kij...@gmail.com >>>> <javascript:>>: >>>> >>>> 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 <cldwes...@gmail.com >>>>> <javascript:>> 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 clo...@googlegroups.com >> <javascript:> >> 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 <javascript:> >> 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+u...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > >
-- 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.