That is an interesting application. The original verb (alpha) could have
been defined as follows,
sum=. +/
count=. #
( alpha=. (sum , count, sum % count )f."1 )
(+/ , # , +/ % #)"1
the one (beta) using a form of teleportation is produced as follows (beware
of wrapping),
in=. adverb def 'y [ (m,''_inout_'')=: y'
out=. adverb def '3 : (m,''_inout_'')'
( beta=. ('sum'out , 'count'out , 'sum'in@(+/) % 'count'in@#)"1 )
(3 : 'sum_inout_' , 3 : 'count_inout_' , 'sum' (1 : 'y [ (m,''_inout_'')=:
y')@(+/) % 'count' (1 : 'y [ (m,''_inout_'')=: y')@#)"1
I often use a different method [0] for refferencing the results of previous
calculations (without embbeding explicit definitions), which for the case
at hand produces the following tacit verb (gamma),
gamma=. (1&({::) , 2&({::) , 1&({::) % 2&({::))@:(<@:(#@:(0&({::))) 2}
])@:(<@:(+/@:(0&({::))) 1} ])@:(,&(<;._1 ' . .')@:<)"1
This is how they compare using different arguments,
stp=. ] (([ ((<;._1 '|Sentence|Space|Time|Space * Time') , (, */&.:>@:(1
2&{))@:(] ; 7!:2@:] ; 6!:2)&>) (10{a.) -.&a:@:(<;._2@,~) ]) [ (0 0 $
13!:8^:((0 e. ])`(12"_)))@:(2 -:/\ ])@:(".&.>)@:((10{a.) -.&a:@:(<;._2@,~)
]) ::(0 0&$@(1!:2&2)@:('Mismatch!'"_))) ".@:('0( : 0)'"_)
T=. i.3 11
stp 666
alpha T
beta T
gamma T
)
┌──────────┬─────┬──────────┬────────────┐
│Sentence │Space│Time │Space * Time│
├──────────┼─────┼──────────┼────────────┤
│ alpha T│1792 │4.12658e_6│0.00739483 │
├──────────┼─────┼──────────┼────────────┤
│ beta T│2560 │1.52727e_5│0.039098 │
├──────────┼─────┼──────────┼────────────┤
│ gamma T│2240 │9.80135e_6│0.021955 │
└──────────┴─────┴──────────┴────────────┘
T=. i.33 111
stp 666
alpha T
beta T
gamma T
)
┌──────────┬─────┬───────────┬────────────┐
│Sentence │Space│Time │Space * Time│
├──────────┼─────┼───────────┼────────────┤
│ alpha T│2560 │4.70158e_5 │0.12036 │
├──────────┼─────┼───────────┼────────────┤
│ beta T│3328 │0.000142892│0.475544 │
├──────────┼─────┼───────────┼────────────┤
│ gamma T│3776 │6.78763e_5 │0.256301 │
└──────────┴─────┴───────────┴────────────┘
T=. i.33 11111
stp 66
alpha T
beta T
gamma T
)
┌──────────┬──────┬───────────┬────────────┐
│Sentence │Space │Time │Space * Time│
├──────────┼──────┼───────────┼────────────┤
│ alpha T│2560 │0.00103981 │2.66192 │
├──────────┼──────┼───────────┼────────────┤
│ beta T│133376│0.00107527 │143.415 │
├──────────┼──────┼───────────┼────────────┤
│ gamma T│133824│0.000839982│112.41 │
└──────────┴──────┴───────────┴────────────┘
The comparisons above might evoke the KISS principle. ;) (I know, Iknow,
it was just an illustration.)
[0] The verb (gamma) was produced, breaking a lot of J rules, with the aid
of a Tacit Toolkit (similar to those which I have shown before) as follows,
(Y SUM COUNT)mn
┌───────┬───────┬───────┐
│0&({::)│1&({::)│2&({::)│
└───────┴───────┴───────┘
gamma=. [ tv f. "1
(SUM COUNT)local o <
SUM h (+/ o Y)
COUNT h (# o Y)
SUM , COUNT , SUM % COUNT
)
gamma
(1&({::) , 2&({::) , 1&({::) % 2&({::))@:(<@:(#@:(0&({::))) 2}
])@:(<@:(+/@:(0&({::))) 1} ])@:(,&(<;._1 ' . .)@:<)"1
However, the verb itself (gamma) is kosher, as far as I know.
On Mon, Nov 25, 2019 at 8:28 AM Kirk Iverson <[email protected]>
wrote:
>
> Anyone following this thread may be interested in a short discussion
> between Igor Zhuravlov, Raul Miller, and myself on Raul's user_talk wiki
> page:
> https://code.jsoftware.com/wiki/User_talk:Raul_Miller
>
> /K
>
>
>
> > Date: Sun, 24 Nov 2019 15:59:29 -0500
> > From: Jose Mario Quintana <[email protected]>
> > To: Programming forum <[email protected]>
> > Subject: Re: [Jprogramming] Explicit vs tacit with assignment
> > Message-ID:
> > <CABtFPKt21uj8RWg_xuU2ELX=
> > [email protected]>
> > Content-Type: text/plain; charset="UTF-8"
> >
> > > To break the rules deliberately one must first know where to swing!
> >
> > Certainly...
> >
> > "Learn the rules like a pro, so you can break them like an artist."
> >
> > Picasso
> >
> > Did he know of what he spoke? His father, a painter and a teacher,
> > reportedly overwhelmed gave his own palette, brushes, and colors to his
> > thirteen-year-old son stating that he will never paint again. This,
> >
> > https://www.pablo-ruiz-picasso.net/work-9.php
> >
> > illustrates what he knew when he was fifteen years old.
> >
> > Back to the subject of tacit assignment, how can one faithfully (to some
> > extent) reproduce the behavior of the explicit verb 3 : 'a,a=:?@#y'
> > (e.g,
> >
> > 3 : 'a,a=:?@#y' '01234'
> > 4 4
> > a
> > 4
> >
> > ) tacitly? (Yes, using a global assignment as opposed to the original
> > local assignment, to make things more interesting.)
> >
> > Right, producing named entities seems to be against the spirit of tacit
> > writing. In addition, a copula is neither a noun, verb, adverb nor
> > conjunction. Nevertheless, one can simply ignore those minor details
and
> > go ahead anyway,
> >
> > (('a'"_) ,&:". 'a=: ' , ":@:?@#) '01234'
> > 3 3
> > a
> > 3
> >
> > (('a'"_) ,&:". 'a=: ' , ":@:?@#) ''
> > 0.732158184 0.732158184
> > a
> > 0.732158184
> >
> > Perhaps surprisingly, a more challenging puzzle is to reproduce the
> > behavior of,
> >
> > 4 :'(x)=:y'
> >
> > tacitly.
> >
> > On Sat, Nov 23, 2019 at 8:53 PM Louis de Forcrand <[email protected]>
> > wrote:
> > >
> > > To follow up on all this, while I am a member of the generation which
> > might write off "lie", I find that correct grammar and spelling are
> > qualities necessary (although certainly not sufficient) for writing
clearly
> > and with good style, and in learning the former one inevitably improves
on
> > the latter.
> > >
> > > To break the rules deliberately one must first know where to swing!
> > >
> > > Cheers,
> > > Louis
> > >
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm