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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.