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 unfamiar,

   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 representaions
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 convinient 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

Reply via email to