I was having second thoughts, was I remembering wrong? So I
implemented a little test:
VERB=:{{
echo 'control value ',":;x
echo 'data value ',":;y
}}
'CONTROL' ]F..VERB <'DATA'
control value DATA
data value CONTROL
Thanks,
--
Raul
On Wed, Feb 24, 2021 at 4:10 AM Raul Miller <[email protected]> wrote:
>
> Sure, but in a left to right fold like X U F..V Y, X should be the
> control, and currently, it's not being treated that way in the context
> of V.
>
> Thanks,
>
> --
> Raul
>
> On Tue, Feb 23, 2021 at 11:22 PM Henry Rich <[email protected]> wrote:
> >
> > IMO the data/control concept is decisive, overriding any esthetics about
> > where x should go.
> >
> > I say eether, you say eyether.
> >
> > Henry Rich
> >
> > On 2/23/2021 9:13 PM, Raul Miller wrote:
> > > On Tue, Feb 23, 2021 at 3:37 PM Hauke Rehr <[email protected]> wrote:
> > >> Folds are a variation on /
> > >> There’s not much more to it.
> > > My thinking is this:
> > >
> > > For dyadic uses of folds, the left argument to the verb derived by
> > > fold should be the initial value for the sequence.
> > >
> > > Meanwhile, there's two kinds of folds. Right to left folds and left to
> > > right folds.
> > >
> > > Right to left folds (F.: is like / and F:: is like /\.). For those
> > > folds, it makes sense that the initial value be the right hand
> > > argument to the first invocation of the fold's v argument.
> > >
> > > Left to right folds (F.. and F:.) do not have corresponding primitive
> > > adverb. For these folds, it makes sense that the initial value be the
> > > left hand argument to the first invocation of the fold's v argument.
> > >
> > > In other words:
> > >
> > > V=: {{x+y [ echo x,y}}
> > > 7 ]F.:V 1 2 3 4
> > > 4 7
> > > 3 11
> > > 2 14
> > > 1 16
> > > 17
> > >
> > > This is perfect. 7 is the initial value, and you get the same result
> > > from this expression:
> > > 1 V 2 V 3 V 4 V 7
> > > 4 7
> > > 3 11
> > > 2 14
> > > 1 16
> > > 17
> > >
> > > It's just like inserting V between each of the items in the list, and
> > > tacking 7 on as the initial value.
> > >
> > > Or, to emphasize the right to left nature of that expression, we could
> > > put in the implied parenthesis:
> > > 1 V(2 V(3 V(4 V 7)))
> > > 4 7
> > > 3 11
> > > 2 14
> > > 1 16
> > > 17
> > >
> > > -------------
> > >
> > > For the left to right folds, we do basically the same thing, but we
> > > would have to use parentheses to force left to right evaluation. In
> > > other words, we should expect that
> > >
> > > 7 ]F..V 1 2 3 4
> > > works like this:
> > > (((7 V 1)V 2)V 3)V 4
> > > 7 1
> > > 8 2
> > > 10 3
> > > 13 4
> > > 17
> > >
> > > And, in my earlier tests today, I thought I was getting that result.
> > > But I see now that I am not.
> > >
> > > 7]F..V 1 2 3 4
> > > 1 7
> > > 2 8
> > > 3 10
> > > 4 13
> > > 17
> > >
> > > Anyways, for the F.. and F:. verbs, I think it does make sense to
> > > change the fold implementation, so that the 'initial' or 'previous'
> > > value appears on the left.
> > >
> > > And, looking back on what Sergy wrote, it looks like I was reading him
> > > wrong.
> > >
> > > Thanks,
> > >
> >
> >
> > --
> > This email has been checked for viruses by AVG.
> > https://www.avg.com
> >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm