Hi Andy, I think Mr. Reeves gave you some excellent reasons to avoid using local mutable state, especially when trying to learn functional programming. If you're interested in seeing a spoiler for 114 you can look at one approach below (if you don't want a spoiler, then close this tab post-haste! ;-)
(fn my-take-while [n pred coll] (lazy-seq (let [first-element (first coll) n (if (pred first-element) (dec n) n)] (when (> n 0) (cons first-element (my-take-while n pred (rest coll))))))) Cheers, James On Thursday, March 20, 2014 8:34:20 PM UTC+1, Andy Smith wrote: > > > Is is very bad form to use local mutable state to solve problems like : > > https://www.4clojure.com/problem/114 > > i.e. > > (fn [n f xs] (let [c (atom 0)] (take-while #(if (f %) (> n (swap! c inc)) > true) xs))) > > If so, what is the strongest reason to reject this kind of code? Since its > a local atom it ought to be thread-safe right? > > Thanks > > Andy > -- 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.