Right, I never saw or found a satisfactory coding of a genuine while
conjunction. However, in Jx one can afford, thanks to Thomas' effective
implementation of the adverb O. for the Jx interpreter, to do the
unthinkable: code a genuine while conjunction recursively! That is, a
conjunction wTCO such that,
u wTCO v
]`($:^:(1:`u))@.v O.
This is how it works for the case at hand,
whileO =: v1@:(v0 wTCO (-. @: v2)) NB.
power i.20
0 7 8 9 10 11 12 13 14 15 16 17 18 19
recursive i.20
0 10 11 12 13 14 15 16 17 18 19
whileO i.20
0 10 11 12 13 14 15 16 17 18 19
recursiveO i.20
0 10 11 12 13 14 15 16 17 18 19
stp=. ([ ((<;._1 '|Sentence|Space|Time|Space * Time') , (, */&.:>@:(1
2&{))@:(] ; 7!:2@:] ; 6!:2)&>) (10{a.) -.&a:@:(<;._2@,~) ]) ".@:('0 : 0'"_)
Y=. i.111
stp 11
recursive Y
whileO Y
recursiveO Y
)
┌──────────────┬──────┬────────────┬────────────┐
│Sentence │Space │Time │Space * Time│
├──────────────┼──────┼────────────┼────────────┤
│ recursive Y│222592│0.0475173844│10576.9896 │
├──────────────┼──────┼────────────┼────────────┤
│ whileO Y│36992 │0.0397433474│1470.18591 │
├──────────────┼──────┼────────────┼────────────┤
│ recursiveO Y│37376 │0.0434088376│1622.44871 │
└──────────────┴──────┴────────────┴────────────┘
On Sat, Mar 19, 2016 at 2:39 PM, Dan Bron <[email protected]> wrote:
> Louis wrote:
> > The problem is that u^:v^:_ y terminates
> > either when 0 = v y OR when y -: u y .
>
> Yeah, this has bitten us all at one time or another. The traditional
> solution is to add a little tag to the data structure which you mutate
> (along with the normal processing) at every iteration. Most commonly we
> just do (u@:>@:{. ; -.&.>@:{:)^:v^:_ y ; 0 (adjusting the boxing logic as
> needed).
>
> I asked for better alternatives than this a few years back [1], but we
> didn’t come up with anything compelling.
>
> -Dan
>
> [1] J Programming thread, “Limit limitation, Oct 2009:
>
> http://www.jsoftware.com/pipermail/programming/2009-October/016513.html <
> http://www.jsoftware.com/pipermail/programming/2009-October/016513.html>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm