Thank you for the reminder, I had forgotten that this is one of the reasons
why I decided, a long time ago, to write only tacitly (apart from
inconsequential sporadic occasions).

On Fri, Mar 5, 2021 at 7:03 AM Raul Miller <[email protected]> wrote:

> The names u and v are special, of course:
>
>    fold=. {{ y (v F:. u) x}}
>    u=. '('"_ , [ , ' u '"_ , ] , ')'"_
>    v=. '('"_ , 'v '"_ , ] , ')'"_
>    (4 2$'X0X1..XN') u fold v 'Y0'
> |stack error
> |   y    (v F:.u)x
>
> But this works, as you probably knew it would:
>    (4 2$'X0X1..XN') u f.fold (v f.)'Y0'
> (v (X0 u Y0))
> (v (X1 u (X0 u Y0)))
> (v (.. u (X1 u (X0 u Y0))))
> (v (XN u (.. u (X1 u (X0 u Y0)))))
>
> Thanks,
>
> --
> Raul
>
> On Thu, Mar 4, 2021 at 6:11 PM Jose Mario Quintana
> <[email protected]> wrote:
> >
> > > When I first read about it, I considered it a fun and approachable
> > > example – and it lends itself to folding so I support elaborating on
> > > this when compiling some learning material/show casing of folds.
> >
> > I would simplify the example by considering the state to be just the
> coins
> > on the plate.  Thus,
> >
> >    knave=. [ , \:~@:] }.~ #@:[
> >
> > and the state history becomes,
> >
> >    K (knave fold ]) P
> >  50 50 50 25 10 5
> > 100 25 50 25 10 5
> >   5 10 25 25 10 5
> >  25 50 10 10  5 5
> >  25 10 10 10  5 5
> >
> > and if one is only interested in the amounts on the plate, then those
> could
> > be produced as follows,
> >
> >    K (knave fold (+/)) P
> > 190 215 80 105 65
> >
> > I often find illustrating the use of symbolic nouns and verbs, for
> example,
> >
> >    u=. '('"_ , [ , ' u '"_ , ] , ')'"_
> >    v=. '('"_ , 'v '"_ , ] , ')'"_
> >
> >    'X' u 'Y'
> > (X u Y)
> >        v 'Y'
> > (v Y)
> >
> > to visualize the products of applied adverbs and conjunctions.  Thus, for
> > the (swapped) noun arguments,
> >
> >    (4 2$'X0X1..XN') ; 'Y0'
> > ┌──┬──┐
> > │X0│Y0│
> > │X1│  │
> > │..│  │
> > │XN│  │
> > └──┴──┘
> >
> > the conjunction F:. produces,
> >
> >    'Y0' v F:. u (4 2$'X0X1..XN')
> > (v (X0 u Y0))
> > (v (X1 u (X0 u Y0)))
> > (v (.. u (X1 u (X0 u Y0))))
> > (v (XN u (.. u (X1 u (X0 u Y0)))))
> >
> > By the way, I tried to show that,
> >
> >    (4 2$'X0X1..XN') u fold v 'Y0'
> >
> > would produce the same result; but, for some reason, j902 did not comply.
> > Oh well...
> >
> >
> > On Fri, Feb 26, 2021 at 2:30 AM Hauke Rehr <[email protected]>
> wrote:
> > >
> > > I remember that knaves example.
> > > Glad to see you agree x/y are better used the other way around.
> > > P is a state altered by each of the knaves in K, respectively.
> > > Another good example showing that, if 'control' vs 'data' were
> > > a decisive creterion, the order of arguments would need to be changed.
> > >
> > > When I first read about it, I considered it a fun and approachable
> > > example – and it lends itself to folding so I support elaborating on
> > > this when compiling some learning material/show casing of folds.
> > >
> > >
> > > Automata are another example: a starting state is altered by
> > > successive transitions depending on items of a control input
> > > into an accepting state.
> > > So replaying a macro (fixed array of commands) takes any current
> > > situation (data) and applies the commands one after the other,
> > > resulting in the (hopefully intended) final situation.
> > >
> > > Maybe a “robot in a maze”-like game could show this where
> > > users are given a set of macros and some goal to achieve,
> > > and can apply the macros until they reach it, macros being
> > > replayed by a fold. I’ll add that one to the list of projects
> > > I’d hope to get around to implementing. Might even be used
> > > for teaching programming, just as the “laby” game does.
> > >
> > > https://sgimenez.github.io/laby/
> > >
> > >
> > > Am 26.02.21 um 02:33 schrieb Jose Mario Quintana:
> > > > Different people may have different preferences, mine is a form that
> I
> > have
> > > > used for many years and roughly corresponds to,
> > > >
> > > >    fold=. {{ y (v F:. u) x}}
> > > >
> > > >
> > > > Thus, the example in,
> > > >
> > > > Loopless Code VI: Temporary Variables (jsoftware.com)
> > > > <
> https://www.jsoftware.com/help/jforc/loopless_code_vi_temporary_v.htm>
> > > >
> > > > becomes,
> > > >
> > > >    knave=. [ ,~ \:~ @: (] }.~ [: # [)
> > > >
> > > >    ( P=. 100 25 100 50 5 10 )
> > > > 100 25 100 50 5 10
> > > >    ( K =. _2 ]\ 50 50 100 25 5 10 25 50 25 10 )
> > > >  50 50
> > > > 100 25
> > > >   5 10
> > > >  25 50
> > > >  25 10
> > > >
> > > >    K ([ (knave fold ] ) {:@:[ , ]) P
> > > > 100 100 50 25 10 5  50 50
> > > >  50  50 50 25 10 5 100 25
> > > > 100  50 25 25 10 5   5 10
> > > >  25  25 10 10  5 5  25 50
> > > >  50  25 10 10  5 5  25 10
> > > >
> > > > I hope it helps
> > > >
> > > >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> 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