I was just thinking about this some more. Here's a slightly less terrible
idea:
(defn rotate [coll]
(rest (take (inc (count coll))
(cycle coll))))
(defn reducycle [fns init coll]
(let [fns-atom (atom fns)
alt-op (fn [& args]
(swap! fns-atom rotate)
(apply (first @fns-atom) args))]
(reduce alt-op init coll)))
(reducycle [- +] 0 (range 1 10))
On Thu, Nov 13, 2014 at 10:30 PM, Robert Levy <[email protected]> wrote:
> sorry, make that
>
> (*reduce alt-op *(*range 1 10)*)
>
> On Thu, Nov 13, 2014 at 10:28 PM, Robert Levy <[email protected]> wrote:
>
>> (let [op (atom +)]
>> (defn alt-op [a b]
>> ((swap! op #(if (= % +) - +)) a b)))
>>
>> (map alt-op (range 1 10))
>>
>> On Thu, Nov 13, 2014 at 10:09 PM, Robert Levy <[email protected]> wrote:
>>
>>> But for "applyv" you could do this:
>>>
>>> (*reduce + *(*map *(*comp eval list*) (*cycle *[*+ -*]) (*range 1 10*)))
>>>
>>> On Thu, Nov 13, 2014 at 10:06 PM, Robert Levy <[email protected]>
>>> wrote:
>>>
>>>> Is that any more elegant than Dave's (reduce + (map * (cycle [1 -1])
>>>> (range 1 n))) though? I would say that's the best actually sensible
>>>> answer proposed in this thread.
>>>>
>>>> On Thu, Nov 13, 2014 at 9:54 PM, Andy L <[email protected]> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Thu, Nov 13, 2014 at 7:23 PM, Robert Levy <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> You don't need this for numbers over 900 right?
>>>>>>
>>>>>>
>>>>> I see what you mean. But no, I just practice and try to capture
>>>>> patterns. So, going after your example I got following:
>>>>>
>>>>> (reduce + (map applyv (cycle [+ -]) (range 1 10)))
>>>>>
>>>>> where something like applyv perhaps exists,
>>>>> (defn applyv [f a] (f v)) - but I am not sure how to find it.
>>>>>
>>>>> A.
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> 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.
>>>>>
>>>>
>>>>
>>>
>>
>
--
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.