Very clear thank you ! I can't wait to know these concept as I am discovering clojure with the 'Functionnal programming for OO programmer' book. Thank you again
Le samedi 17 décembre 2016 18:53:31 UTC-5, James Reeves a écrit : > > On 17 December 2016 at 22:13, Rafo Ufoun <raf.de...@gmail.com > <javascript:>> wrote: > >> I'm a real newbe to clojure and functionnal programming but reading your >> answer raised a question : >> >> Where do you "store" the stopwatch object which you are passing to all >> your functions ? >> >> I understand that mutability is not needed to develop the functions you >> described but all of them take a stopwatch as as an argument. This >> stopwatch must be stored somewhere to call these functions against ? >> > > Sure. At its simplest you could just store the stopwatch as a local > binding. For example, lets say we create an input loop: > > (loop [stopwatch zeroed-stopwatch] > (wait-for-button) > (if (started? stopwatch) > (let [stopped-stopwatch (stop stopwatch)] > (println (elapsed stopped-stopwatch)) > (recur stopped-stopwatch) > (recur (start stopwatch)))) > > The state of the stopwatch is stored as a loop variable. If we didn't want > an infinite loop, we could use a let form instead to similar effect. > > If we have a more traditional GUI, then we have to communicate across > threads, and for that we'd use an atom (or possible a ref): > > (let [stopwatch (atom zeroed-stopwatch] > (on-click button (fn [evt] (swap! stopwatch toggle)) > (on-tick label (fn [evt] (set-text label (elapsed @stopwatch)))) > > Does that make things clearer? > > - James > -- 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.