if everything is the same shape, then the easy way

  100  ,~   i.5 
0 1 2 3 4 100

  -~/ 100  ,~   i.5 
90


An adverb that works when the items you want to reduce are not (or may not be) 
the same shape as the (initial value and) final answer 

boxscan =: ((&.>)/)(>@:)

  100    ([:-~boxscan ,~)&(<"_1) i.5 
90 


  100    ([:(- +/"1)~ boxscan ,~)&(<"_1) i.5 2 
55 


then as an adverb,

reduce =: 1 : '([: u boxscan ,~)&(<"_1)'

  100    (- +/"1)~ reduce i.5 2 
55 


  100    (- +/"1)~ reduce 0 1 ,: 2 3 
94 



----- Original Message -----
From: Moon S <[email protected]>
To: [email protected]
Cc: 
Sent: Tuesday, February 3, 2015 11:15 AM
Subject: [Jprogramming] Fold/reduce with initial value?

I have a list (l), some object (o) and a verb (v) modifying the object:

l = l_0 l_1 ... l_n
o_new = o_old v l_i

The list items and the object have different types. I want to apply all the
list items to the object:

o_new = (...((o_old v l_0) v l_1) ... v l_n)     NB. the order of items
doesn't matter

Currently I do it like this:

o =: o_old
3 : 'o =: y v o' "0 l

I suspect, there must be some built-in feature for that, like / or ^:, so
that I could write e.g.
o_new =: o_old v REDUCE l, but I couldn't find a suitable
verb/adverb/conjunction.

Any help?

Thank you.

Georgiy Pruss.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to