Hi Bo,
In principle, any explicit verb can be rewritten tacitly. In practice,
sometimes this can be very difficult if one adheres to the Dictionary
rules; however, with some familiarity it is usually easy as long as one is
willing to bend the rules (and expressions such as 13 :'x H. y 2' can
even be translated automatically with the right tool). I provided an
embedded hand-coded tacit form of H2 in my reply (search below for the
entry 'Mnt=.' and compare it to the entry 'Mn=.') using a wicked tacit
toolkit. An alternative stand-alone tacit version of H2 follows, (mind
you, it is long vs its explicit counterpart),
h2=. ,^:(0:`(<'`:'))&6@:([,(<'H.'),(<2;~":0),~])&:(<@:((":0) ; ]))
While I have your attention, I hope, I would like to ask you a question
regarding your simplify verb [0]: Do you have a similar verb when instead
of having a univariate sample (vector) one has a multivariate sample
(matrix)? I would be interested to see a version even if it is restricted
to matching just the first two moments (the mean and variance-covariance of
the sample).
[0] [Jprogramming] simplify
http://www.jsoftware.com/pipermail/programming/2015-June/042130.html
On Tue, Jul 12, 2016 at 1:09 AM, 'Bo Jacoby' via Programming <
[email protected]> wrote:
>
> Hi Jose!
> Thank you for your interest in my program.
> I do not know if there exists a tacit version of (13 :'x H. y 2') .
> I do not share your allergy against
> [:-1e_7+] NB. 10 characters
> as opposed to
> -@:(1e_7+]) NB. 12 characters
>
> Normally I would prefer the shorter version.
> Bo. Den 1:32 tirsdag den 12. juli 2016 skrev Jose Mario Quintana <
> [email protected]>:
>
>
>
> Your version would be a neat tacit rewriting of ms, except that you
> defined
> H2 explicitly. The hybrid nature of ms, written this way, is apparent when
> one tries to fix it,
>
> ms f.
> [: (([: <: {.) ,: [: %: {. * ([: +: {:) - [: >: {.) 2 %~/\ (1 2 3 ,&>/ [: -
> [) 4 : '(x H.y)2'"1 [: - 9.9999999999999995e_8 + ]
>
> Personally, I am allergic to forks with leading caps; but finding a remedy
> a remedy is easy,
>
> ms=. (<:@:{. ,: %:@:({. * +:@:{: - >:@:{.))@:(2 %~/\ (1 2 3 ,&>/ -@:[)
> H2"1 -@:(1e_7 + ]))
>
> Either way, the tricky part is to rewrite H2 tacitly.
>
>
>
>
> On Mon, Jul 11, 2016 at 3:46 AM, 'Bo Jacoby' via Programming <
> [email protected]> wrote:
> H2=.4 :'(x H.y)2'
> ms=.[:(([:<:{.),:[:%:{.*([:+:{:)-[:>:{.) 2%~/\(1 2 3,&>/[:-[)H2"1[:-1e_7+]
> 6 6j2 6j2 ":|:7 8 9 10 ([,ms) 10
> 7 3.73 1.96
> 8 5.25 2.05
> 9 7.05 1.87
> 10 9.01 1.39
>
>
> Den 21:58 søndag den 10. juli 2016 skrev Jose Mario Quintana <
> [email protected]>:
>
>
>
> Exercise 8. Rewrite the verb explicit verb ms shown below tacitly, as
> usual, bonus points for a fixed tacit version (see the message [0]).
>
> Mn=: 13 :'y H.(-x+1e_7)2'"1
> M=: 13 :'|:y Mn 1 2 3,&>/-i.1+y'
> ms=. 13 : '(<:a),:%:a*(+:b)->:a[''a b''=.|:2%~/\"1 M y'
> 3":(i.@>:,ms) 10
>
> A (wicked) solution follows after the warning.
>
> [0] [Jprogramming] Using the hypergeometric adverb (H.).
> http://www.jsoftware.com/pipermail/programming/2016-July/045466.html
>
>
>
>
> _|_|_| _| _|
> _| _|_|_| _|_| _| _|_| _| _|_|
> _|_| _| _| _| _| _| _| _|_|_|_| _|_|
> _| _| _| _| _| _| _| _| _|
> _|_|_| _|_|_| _|_| _| _| _|_|_| _| _| _| _|
> _|
> _|
>
>
>
>
> The following is a slightly edited session:
>
> JVERSION
> Engine: j805/j64/windows
> Beta-9: commercial/2016-07-05T15:45:22
> Library: 8.04.15
> Qt IDE: 1.4.10/5.4.2
> Platform: Win 64
> Installer: J804 install
> InstallPath: j:/program files/j
> Contact: www.jsoftware.com
>
> First, the explicit version,
>
> Mn=: 13 :'y H.(-x+1e_7)2'"1
> M=: 13 :'|:y Mn 1 2 3,&>/-i.1+y'
> ms=. 13 : '(<:a),:%:a*(+:b)->:a[''a b''=.|:2%~/\"1 M y'
> 3":(i.@>:,ms) 10
> 0 1 2 3 4 5 6 7 8 9 10
> 0 0 0 1 1 2 3 4 5 7 9
> 0 0 1 1 1 1 2 2 2 2 1
>
> Next, the tacit (fixed) version.
>
> Running the J Wicket Toolkit (see the trailing message),
>
> (0!:0)<'/.../j wicked toolkit.ijs'
>
> which is need it to define Mnt,
>
> Mnt=. (] train@:((an 2) ;~ Cloak <'H.')f. (-@:(1e_7 + [)))"1
>
> Mt=. |:@:(Mnt 1 2 3 ,&>/ -@:i.@:>:)
>
> mst=. (<:@:[ ,: %:@:([ * +:@:] - >:@:[))/@:|:@:(2 %~/\"1 Mt f.)
>
>
>
>
>
> 3":(i.@>:,mst) 10
>
> 0 1 2 3 4 5 6 7 8 9 10
>
> 0 0 0 1 1 2 3 4 5 7 9
>
> 0 0 1 1 1 1 2 2 2 2 1
>
>
>
> NB. It is fixed...
>
> 66 (-@:[ ]\ 5!:5@<@:]) 'mst'
>
> (<:@:[ ,: %:@:([ * +:@:] - >:@:[))/@:|:@:(2 %~/\"1 |:@:(((] ,^:(0:
>
> ``:)&6 :.(<@:((,'0') ,&< ]))@:((<(,'0');2) ;~ ,^:(0:`H.)) -@:(9.99
>
> 99999999999995e_8 + [))"1) (1 2 3 ,&>/ -@:i.@:>:)))
>
>
>
> (3":(i.@>:,ms) 100) -: (3":(i.@>:,mst) 100)
>
> 1
>
>
> On Fri, Dec 18, 2015 at 7:33 PM, Jose Mario Quintana <
> [email protected]> wrote:
>
> > Dan wrote:
> >
> > At some point we’re going to have to put our heads together and create a
> > JAL addon to collect all these utilities.
> >
> > "So much to do, so little time." However, my current writing style might
> > be perceived by many as nasty. A sample follows together with an updated
> > Wicked Tacit Toolkit (WTT) that must be pre-loaded.
> >
> > WARNING: The following is not for the faint-hearted :)
> >
> >
>
> http://www.collinsdictionary.com/dictionary/english/not-for-the-faint-hearted
> >
> > Fetch, From, Left and Right are among some added adverbs to the WTT which
> > I find useful. What do they do?
> >
> > From produces a related list of boxed verbs,
> >
> > 3 From
> > +-----------+
> > ¦0&{¦1&{¦2&{¦
> > +-----------+
> > _5 From
> > +------------------------+
> > ¦_5&{¦_4&{¦_3&{¦_2&{¦_1&{¦
> > +------------------------+
> >
> > Similiarly,
> >
> > _3 Fetch
> > +--------------------------+
> > ¦_3&({::)¦_2&({::)¦_1&({::)¦
> > +--------------------------+
> > 5 Fetch
> > +---------------------------------------+
> > ¦0&({::)¦1&({::)¦2&({::)¦3&({::)¦4&({::)¦
> > +---------------------------------------+
> >
> > Left and Right select arguments accordingly,
> >
> > 2 Fetch Right
> > +---------------------+
> > ¦0&({::)@:]¦1&({::)@:]¦
> > +---------------------+
> > _3 From Left
> > +-----------------------+
> > ¦_3&{@:[¦_2&{@:[¦_1&{@:[¦
> > +-----------------------+
> >
> > When can they be useful?
> >
> > This is an illustration (rewriting sf1 adverb in the original thread),
> >
> > 'V0 V1 V2' =. 3 Fetch Right
> > fg=. (0;1)&{:: NB. Fetching the gerund
> > sf1=. ((;:'@{}') train o ((V0 at [cv) ; V1 ; (V2 at ]cv))&:box fg) o
> > tie&'' f.adv
> >
> > _66 ]\ (5!:5)@< 'sf1'
> > ("_)(((`'')(&(((;:'@{}') ,^:(0:``:)&6 :.(<@:((,'0') ,&< ]))@:((0&(
> > {::)@:] ,^:(0:`@:) >@:((<[)"_)) ; 1&({::)@:] ; 2&({::)@:] ,^:(0:`@
> > :) >@:((<])"_))&:(<@:(,^:(0:``:)&6 :.(<@:((,'0') ,&< ])))"0) (0;1)
> > &({::))@:(,^:(0:``))&''@:(,^:(0:``:)&6 :.(<@:((,'0') ,&< ]))@:(<@:
> > ((0;1;0)&({::))))@:[)))((`_)(`:6)))
> >
> > NB. Testing...
> >
> > (v0 v1 v2)sf1
> > v0@:[ v1 v2@:]
> > +----------------------+
> > ¦+-------+¦v1¦+-------+¦
> > ¦¦v0¦@:¦[¦¦ ¦¦v2¦@:¦]¦¦
> > ¦+-------+¦ ¦+-------+¦
> > +----------------------+
> >
> > 3 4 (+: + -:)sf1 2 4
> > 7 10
> >
> > This is another version that might look a little less unfamiliar,
> >
> > NB. Defining the darkhorse...
> >
> > 'ATOP LEFT RIGHT'=. 3 From Left
> > 'V0 V1 V2' =. 3 From Right
> >
> > fg=. (0;1)&{:: NB. Fetching the gerund
> > workhorse=. (;:'@[]') (V0 , ATOP , LEFT , V1 , V2 , ATOP , RIGHT c) fg
> > darkhorse=. train o workhorse o tie&''
> >
> > NB. Defining the adverb...
> >
> > sf1=. darkhorse f.adv
> >
> > _66 ]\ (5!:5)@< 'sf1'
> > ("_)(((`'')(&(,^:(0:``:)&6 :.(<@:((,'0') ,&< ]))@:((;:'@[]') (0&{@
> > :] , 0&{@:[ , 1&{@:[ , 1&{@:] , 2&{@:] , 0&{@:[ , 2&{@:["_) (0;1)&
> > ({::))@:(,^:(0:``))&''@:(,^:(0:``:)&6 :.(<@:((,'0') ,&< ]))@:(<@:(
> > (0;1;0)&({::))))@:[)))((`_)(`:6)))
> >
> > NB. Testing...
> >
> > (v0 v1 v2)sf1
> > v0@[ v1 v2@]
> > +--------------------+
> > ¦+------+¦v1¦+------+¦
> > ¦¦v0¦@¦[¦¦ ¦¦v2¦@¦]¦¦
> > ¦+------+¦ ¦+------+¦
> > +--------------------+
> >
> > 3 4 (+: + -:)sf1 2 4
> > 7 10
> >
> >
> > The updated WTT follows (as always, beware of wrapping lines),
> >
> >
> > NB.
> >
>
> ----------------------------------------------------------------------------
> > NB. Wicked Tacit Toolkit...
> > NB.
> >
>
> ----------------------------------------------------------------------------
> >
> > NB. Load it using 0!:0 or similar or
> > NB. paste it on an J editing window and use Crtl-A Crtl-E or
> > NB. of course, load it using a hot key (or replace '=.' by '=:' if you
> > must)
> >
> > NB. A word is a noun, verb, adverb or conjunction
> >
> >
> > (_ o=. @:) (c=. "_) (e=. &.>) (x=. @:[) (y=. @])
> >
> > an=. <@:((,'0') ,&< ]) NB. Atomizing words (monadic verb)
> >
> > Cloak=. (0:`)(,^:) NB. Cloaking (the
> > atomic representations of)
> > NB. adverbs or conjunctions as monadic
> or
> > NB. dyadic verbs (adv)
> > Cloak=. ((5!:1)@:<'Cloak')Cloak NB. Cloak verbing itself! (monadic ver)
> >
> > 'amper at evoke fix rank tie'=. Cloak o < e o ;: '& @: `: f. " `'
> > NB. Verbing some adverbs and conjunctions
> >
> > train=. (evoke&6) :. an f. NB. (`:6) with a convenient obverse
> > NB. (monadic verb)
> > box=. (< o train "0) f. NB. Boxing primitives and pro-words
> > NB. (monadic verb)
> >
> > af=. an o fix
> >
> > (a0=. `'') (a1=. (@:[) ((<'&')`) (`:6)) (a2=. (`(<(":0);_)) (`:6))
> > av=. ((af'a0')`) (`(af'a1')) (`(af'a2') ) (`:6)
> > NB. Adverbing a monadic verb (adv)
> > assert 1 4 9 -: 1 2 3 *: adv
> >
> > aw=. < o ((0;1;0)&{::) NB. Fetching the atomic representation
> >
> > u (a3=. (o (train o aw f.)) ('av'f.)) (a4=. "_)
> >
> > adv=. train o ((af'a4') ; ] ; (af'a3')"_) f.av
> > assert 1 4 9 -: 1 2 3 *: adv
> > assert 6 -: * (,^:(0:`(<'/'))) adv 1 2 3
> > assert 0 1 3 -: (*:`(+/\)) (train f. o (0&{ , (<'-') , 1&{)) adv 1 2 3
> >
> > a3=. (o (aw f.)) ('av'f.)
> >
> > Adv=. (train f. @:) (train o ((af'a4') ; ] ; (af'a3')"_) f.av)
> > assert 1 4 9 -: 1 2 3 ((<'*:') ; ] ) Adv
> > assert 6 -: * (< , ((<'/')"_)) Adv 1 2 3
> > assert 0 1 3 -: (*:`(+/\)) (0&{ , (<'-') , 1&{)@:(('';1)&{::) Adv 1 2 3
> >
> > Ver=. Cloak o af f. NB. Verbing after fixing a pro-adverb or
> > pro-conjunction
> > NB. (monadic verb)
> > ver=. Cloak o an f. NB. Verbing after fixing an adverb or conjunction
> > NB. (monadic verb)
> >
> > NB. Defining cv in terms of itself...
> > cv=. ((rank&_) o < o train)f.adv (>@:) NB. First version
> > cv=. (train f. cv at (<x rank _ c)) f.adv NB. Constant verb
> > u ( cv=. ( >cv at (<x rank _ c)) f.adv )
> > NB. Constant word (adv)
> > NB. (cv is to words as c is to nouns)
> > assert (CRLF cv _) -: CRLF
> > assert (u cv _) <adv -: u <adv
> > assert (!@# cv _) <adv -: !@# <adv
> > assert (< o ((Ver'cv') o train <'/') _) -: ( < o train (<'/'))
> > assert (< o ((Ver'cv') o train <'"') _) -: ( < o train (<'"'))
> >
> >
> > NB. Fetch and From...
> > pointers=. (<: o - o i.)`i. @.(0<])
> >
> > Fetch=. (] amper {:: cv)e o pointers f.adv NB. Verbs mnemonics pointers
> > NB. (e.g., ( 'u0 u1 u2 u3'=. 4 Fetch ) j ( 'v0 v1 v2 v3'=. _4 Fetch ) )
> >
> > assert (< o train 3 Fetch) -: ( 0&({::) 1&({::) 2&({::)) (< adv)
> > assert (< o train _3 Fetch) -: (_3&({::) _2&({::) _1&({::)) (< adv)
> >
> > From=. (] amper { cv)e o pointers f.adv NB. Verbs mnemonics pointers
> > NB. From=. (] ([ amper train y)(({ `'')c))e o i. f. adv
> > NB. (e.g., ( 'u0 u1 u2 u3'=. 4 From ) j ( 'v0 v1 v2 v3'=. _4 From ) )
> >
> > assert (< o train 3 From ) -: ( 0&{ 1&{ 2&{ ) (<adv)
> > assert (< o train _3 From ) -: (_3&{ _2&{ _1&{ ) (<adv)
> >
> > Left=. (at [cv)e f.adv
> > Right=. (at ]cv)e f.adv
> >
> >
> > On Tue, Dec 15, 2015 at 6:47 PM, Dan Bron <[email protected]> wrote:
> >
> >> > Against my best judgement :), a purist version of Adv follows,
> >> > assert 1 4 9 -: 1 2 3 *: av
> >>
> >> That’s so cool :)
> >>
> >> At some point we’re going to have to put our heads together and create a
> >> JAL addon to collect all these utilities.
> >>
> >> Named F^4, of course.
> >>
> >> -Dan
> >> ----------------------------------------------------------------------
> >> 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
> ----------------------------------------------------------------------
> 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