You need an explicit indication that the dyadic
case is being defined. Thus:
foldl=: 1 : (':'; 'u/ x,y')
0 -foldl >:i.5
_3
----- Original Message -----
From: "Sherlock, Ric" <[email protected]>
Date: Wednesday, May 13, 2009 17:38
Subject: Re: [Jchat] Fold (Wikipedia)
To: Chat forum <[email protected]>
> > From: Viktor Cerovski
> > It is a bit more complicated:
> >
> > foldl1 =: /
> > foldr1 =: ~/(@:|.)
> >
> > as in:
> >
> > - foldl1 1 2 3 4 NB. (1-(2-(3-4)))
> > _2
> >
> > - foldr1 1 2 3 4 NB. (((1-2)-3)-4)
> > _8
> >
> > but I (still) don't think there is an easy way to define foldl and
> > foldr in
> > J.
>
> I had come up with similar adverbs for foldl1 and foldr1 and was
> trying to define adverbs that took the initial value as a left
> argument to define foldl and foldr.
>
> Can anyone help me understand why these don't work?
>
> ]lst=: >: i. 5
> 1 2 3 4 5
> foldl=: 1 : 'u/ x,y'
> 0 - foldl lst
> |domain error
> | 0 -foldl lst
> foldr=: 1 : 'u~/@:|. x,y'
> 0 - foldr lst
> |domain error
> | 0 -foldr lst
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm