Pascal wrote: "is there a tacit version of unbv?"
Sure,
of=. train o ([ ; an y)f.
S (+/ %#)`'' _.
┌──────┐
│+/ % #│
└──────┘
(S (+/ %#)`'' _.) (of + ]) 2 3 4
5 6 7
A boxed list of verbs,
S (+/ %#)`'' *:`'' _.
┌──────┬──┐
│+/ % #│*:│
└──────┴──┘
is easy to handle,
(S (+/ %#)`'' *:`'' _.) (of + ])("0 _) 2 3 4
5 6 7
6 12 20
It works with gerunds too, see [0] for processing a gerund that is not a
plain list,
(+/ %#)`*: (of + ])("0 _) 2 3 4
5 6 7
6 12 20
When verbs are involved, using vs adverbial counterpart sb [1] instead
is more convenient because verbs can be entered directly,
S=. ]sb
[: (+/ %#) *: S
┌──────┬──┐
│+/ % #│*:│
└──────┴──┘
the rest stays the same,
[: 'this' 'is' 'strand' 'notation' 0 a: (a.{~97+i.10) S
┌────┬──┬──────┬────────┬─┬──┬──────────┐
│this│is│strand│notation│0│┌┐│abcdefghij│
│ │ │ │ │ ││││ │
│ │ │ │ │ │└┘│ │
└────┴──┴──────┴────────┴─┴──┴──────────┘
[: (<'+') (<'/') (<'"') (1 2 3) S
┌─┬─┬─┬─────┐
│+│/│"│1 2 3│
└─┴─┴─┴─────┘
By the way,
JVERSION
Engine: j805/j64/windows
Release: commercial/2016-12-11T08:02:16
Library: 8.05.11
Qt IDE: 1.5.3/5.7.0
Platform: Win 64
Installer: J805 install
InstallPath: c:/program files/j
Contact: www.jsoftware.com
References
[0] [Jprogramming] Evaluating a Gerund Array
http://www.jsoftware.com/pipermail/programming/2015-April/041596.html
[1] [Jprogramming] Are closures possible in J?
http://www.jsoftware.com/pipermail/programming/2016-July/045481.html
On Tue, Mar 28, 2017 at 8:31 PM, 'Pascal Jasmin' via Programming <
[email protected]> wrote:
> Pascal wrote: "is there any way to use these noun arguments as part of a
>
> tacit expression that will apply the functions to arguments?"
>
> That might be a tricky question: Can you elaborate what you have in mind?
>
>
> is there a tacit version of unbv? (though I'm satisfied that it is easy
> enough. found this after asking the question)
>
>
> unbv =: 4 : '( > x ) y'
> fixB =: 1 : '<@:fix ''u'''
>
> (+/ %#) fixB (unbv + ]) 2 3 4
> 5 6 7
>
> ________________________________
> From: Jose Mario Quintana <[email protected]>
> To: Programming forum <[email protected]>
> Sent: Tuesday, March 28, 2017 8:07 PM
> Subject: Re: [Jprogramming] Recurrent verbs (was introducing j plus plus)
>
>
>
> Recurrent verbs have the capability of re-producing themselves or
>
> variations of themselves. WARNING: they are powerful and one should try to
>
> be careful when dealing with them to avoid falling into traps (just as one
>
> should be careful, for example, when dealing with their cousins, the
>
> recursive verbs) AND they are bending the interpreter to its limits; save
>
> your work!
>
>
> Pascal wrote: "Can body ever hope to execute an argument directly?"
>
>
> Variations of body certainly can (see below).
>
>
> Pascal wrote: "A generic (anonymous) way to create the "higgs-boson" state
>
> of J :P ..."
>
>
> Right, that is the reason why a few months ago I redefined the standard
>
> library verb,
>
>
> datatype
>
> 3 : 0
>
> n=. 1 2 4 8 16 32 64 128 1024 2048 4096 8192 16384 32768 65536 131072
> 262144
>
> t=. '/boolean/literal/integer/floating/complex/boxed/extended/rational'
>
> t=. t,'/sparse boolean/sparse literal/sparse integer/sparse floating'
>
> t=. t,'/sparse complex/sparse boxed/symbol/unicode/unicode4'
>
> (n i. 3!:0 y) pick <;._1 t
>
> )
>
>
> as
>
>
> ". noun define -. CRLF
>
>
> datatype=.
>
> (<;._1 '|boolean|literal|integer|floating|complex|boxed|extended|r
>
> ational|sparse boolean |sparse literal|sparse integer|sparse float
>
> ing|sparse complex|sparse boxed |symbol |unicode|unicode4|?|?|verb
>
> |adverb|conjunction') >@{~ 1 2 4 8 16 32 64 128 1024 2048 4096 819
>
> 2 16384 32768 65536 131072 262144 524288 1048576 2097152 4194304 8
>
> 388608 i. 3!:0
>
>
> )
>
>
> Thus,
>
>
> datatype GENOME
>
> boxed
>
> datatype@:> GENOME
>
> verb
>
>
> train=. (,^:(0:`(<'`:')))&6
>
>
> (BW=. <@:train"0@:;:'+/"') NB. Boxing words (a verb, an adverb and a
>
> conjunction)
>
> ┌─┬─┬─┐
>
> │+│/│"│
>
> └─┴─┴─┘
>
>
> datatype&> BW NB. The datatypes of the words
>
> verb
>
> adverb
>
> conjunction
>
>
> I wrote: "This was the first recurrent verb I ever wrote; which was a proof
>
> of concept (that a verb can seemingly take arguments as a strand)."
>
>
> Is easy to write, with the aid of the Tacit Toolkit, a fairly general
>
> recurrent verb sv that can seemigly provide strand notation, or convert
>
> convert verbs to (seemingly) take arguments as a strand. Yet, starting
>
> from scratch is not that difficult anyway:
>
>
> Cloak=. (0:`)(,^:)
>
> Cloak=. ((5!:1)@:<'Cloak')Cloak
>
>
> 'evoke fix amper'=. < o Cloak "0 o ;: '`: f. &'
>
> train=. evoke&6 f.
>
> an=. <@:((,'0') ,&< ])
>
> z=. (((an'')`($ ,)`)(`:6))
>
>
> indet=. (128!:5)z NB. Is Indeterminate?
>
> eval=. ({. train o , an o ((train :: ])e) o }.)
>
> body=. ([ amper > o {.) o ([ , <y)`(eval o }.x)@.(indet y)
>
>
> GENOME=. < o fix'body' NB. GENOME=. body f.<adv
>
> vs=. GENOME&body f.
>
>
> One should begin at the beggining [0],
>
>
> S=. vs ]`''
>
>
> _66 [\ (5!:5)<'S'
>
> ((<([ ,^:(0:`&) >@:{.)@:([ , <@:])`(({. ,^:(0:``:)&6@:, <@:((,'0')
>
> ,&< ])@:(,^:(0:``:)&6 ::]&.>)@:}.)@:}.@:[)@.(('' ($ ,) 128!:5)@:]
>
> )),<,<,']')&(([ ,^:(0:`&) >@:{.)@:([ , <@:])`(({. ,^:(0:``:)&6@:,
>
> <@:((,'0') ,&< ])@:(,^:(0:``:)&6 ::]&.>)@:}.)@:}.@:[)@.(('' ($ ,)
>
> 128!:5)@:]))
>
>
> S 'this' 'is' 'strand' 'notation' 0 a: (a.{~97+i.10) _.
>
> ┌────┬──┬──────┬────────┬─┬──┬──────────┐
>
> │this│is│strand│notation│0│┌┐│abcdefghij│
>
> │ │ │ │ │ ││││ │
>
> │ │ │ │ │ │└┘│ │
>
> └────┴──┴──────┴────────┴─┴──┴──────────┘
>
>
> The arguments must be nouns, but if they are valid train (`:6) arguments
>
> then their products are taken,
>
>
>
> (BW=. S (<'+') (<'/') (<'"') (1 2 3) _.)
>
> ┌─┬─┬─┬─────┐
>
> │+│/│"│1 2 3│
>
> └─┴─┴─┴─────┘
>
>
> datatype&> BW
>
> verb
>
> adverb
>
> conjunction
>
> integer
>
>
> I will show other applications of vs another day.
>
>
> Pascal wrote: "is there any way to use these noun arguments as part of a
>
> tacit expression that will apply the functions to arguments?"
>
>
> That might be a tricky question: Can you elaborate what you have in mind?
>
>
> [0] [Jprogramming] Third argument (was: avoid boxing with fills - ?)
>
> Dan Bron
>
> http://www.jsoftware.com/pipermail/programming/2009-July/015541.html
>
>
>
>
>
> On Tue, Mar 28, 2017 at 12:49 AM, 'Pascal Jasmin' via Programming <
>
> [email protected]> wrote:
>
>
> >
>
> >
>
> >
>
> > Can body ever hope to execute an argument directly?
>
> >
>
> > A generic (anonymous) way to create the "higgs-boson" state of J :P
>
> >
>
> > fixB =: 1 : '<@:fix ''u'''
>
> >
>
> > +/ fixB
>
> >
>
> > 3!:0 every +/ fixB
>
> > 2097152
>
> >
>
> > ???? - not on this page: http://www.jsoftware.com/help/
>
> > dictionary/dx003.htm
>
> >
>
> >
>
> > and then a sentence where body does not create a domain error:
>
> >
>
> > body
>
> >
>
> > +/ fixB body 2 3 NB. ignores y. but same result as monad, with +/ fixB
>
> > as arg.
>
> >
>
> > (<+/)&(+/)
>
> >
>
> > can do stuff like
>
> >
>
> > +/ fixB , -/ fixB
>
> > ┌──┬──┐
>
> > │+/│-/│
>
> > └──┴──┘
>
> >
>
> > is there any way to use these noun arguments as part of a tacit
> expression
>
> > that will apply the functions to arguments?
>
> >
>
> > ________________________________
>
> > From: Jose Mario Quintana <[email protected]>
>
> > To: Programming forum <[email protected]>
>
> > Sent: Monday, March 27, 2017 7:14 PM
>
> > Subject: Re: [Jprogramming] introducing j plus plus
>
> >
>
> >
>
> >
>
> > Pascal wrote: "weird that I can't define the verb directly, though the
> echo
>
> > can be eliminated"
>
> >
>
> > Yes, this is a weird wicked world :) The echo was there just to add
>
> > suspense before the (faulty) linear representation of the verb was shown.
>
> >
>
> > In my mind, the simplest anonymous recurrent verb (so far) is (defined in
>
> > slow motion),
>
> >
>
> > amper =. ,^:(0:`(<'&' ))
>
> > fix =. ,^:(0:`(<'f.'))
>
> > body =. [ amper >@:[
>
> > GENOME=. <@:fix'body'
>
> > me=. GENOME&body f.
>
> >
>
> > me (3) (2) (1)
>
> > (<[ ,^:(0:`&) >@:[)&([ ,^:(0:`&) >@:[)
>
> >
>
> > This was the first recurrent verb I ever wrote; which was a proof of
>
> > concept (that a verb can seemingly take arguments as a strand).
>
> >
>
> >
>
> > Pascal wrote: " its hard to understand the verb to the left of &, as it
>
> > seems to be a hook"
>
> >
>
> > "Seems" is the key word. It is not a hook, it is not even a verb, it is
> a
>
> > noun! Likewise,
>
> >
>
> > type'GENOME'
>
> > ┌────┐
>
> > │noun│
>
> > └────┘
>
> > (5!:5)<'GENOME'
>
> > <[ ,^:(0:`&) >@:[
>
> >
>
> > GENOME&body f.
>
> > (<[ ,^:(0:`&) >@:[)&([ ,^:(0:`&) >@:[)
>
> >
>
> > GENOME
>
> > ┌────────────────┐
>
> > │[ ,^:(0:`&) >@:[│
>
> > └────────────────┘
>
> >
>
> > Recall "Last, but certainly not least, the LR is trying its best to deal
>
> > with a noun that, arguably, should not be part of J's reality but
>
> > fortunately it is. That is, a box containing a verb (in my mind this is
>
> > the simplest way for a noun to represent a verb , adverb or conjunction;
> to
>
> > recover the word just open the box)"
>
> >
>
> >
>
> >
>
> >
>
> > On Sun, Mar 26, 2017 at 10:34 PM, 'Pascal Jasmin' via Programming <
>
> > [email protected]> wrote:
>
> >
>
> > > weird that I can't define the verb directly, though the echo can be
>
> > > eliminated,
>
> > >
>
> > > WhoAmI=. (<@:(,^:(0:`(<'f.')))'body')&(body=. ([ (,^:(0:`(<'&')))
> >)@:[
>
> > [
>
> > > ])f.
>
> > >
>
> > > creates a simpler version (missing lr quotes bug) that returns itself.
>
> > >
>
> > >
>
> > > 1 WhoAmI 3
>
> > > (<([ ,^:(0:`&) >)@:[ [ ])&(([ ,^:(0:`&) >)@:[ [ ])
>
> > >
>
> > >
>
> > >
>
> > > my version of Cloak (in jpp library btw)
>
> > >
>
> > >
>
> > > eval =: 1 : 'if. 2 ~: 3!:0 m do. m else. a: 1 : m end.'
>
> > > isNoun =: (0 = 4!:0 ::0:)@:<
>
> > > aar =: 1 : 'if. isNoun ''u'' do. q =. m eval else. q =. u end. 5!:1 <
>
> > > ''q'' '
>
> > > Cloak =: (aar(0:`))(,^:)
>
> > >
>
> > > a =. ([ '&'Cloak >)
>
> > >
>
> > > I can't get this verb to do anything other than domain error,
>
> > >
>
> > > (< a@:[ [])&(a@:[ []) f. NB. doesn't quite produce the same verb,
> as
>
> > > there's an extra paren.
>
> > > (< (([ ,^:(0:`&) >)@:[ [ ]))&(([ ,^:(0:`&) >)@:[ [ ])
>
> > >
>
> > > even assigned, it also domain errors,
>
> > >
>
> > > but even in original, its hard to understand the verb to the left of &,
>
> > as
>
> > > it seems to be a hook where "<" would be smaller than. But just "a" is
>
> > > hard to get too.
>
> > >
>
> > > ________________________________
>
> > > From: Jose Mario Quintana <[email protected]>
>
> > > To: Programming forum <[email protected]>
>
> > > Sent: Sunday, March 26, 2017 1:28 PM
>
> > > Subject: Re: [Jprogramming] introducing j plus plus
>
> > >
>
> > >
>
> > >
>
> > > Before I show how the verb WhoAmI can be produced it might helpful to
>
> > > explain how it works. The verb echoes its right argument (''),
> discards
>
> > it
>
> > > and anonymously reproduces, an exact copy of, itself; then, the
>
> > reproduced
>
> > > verb echoes its right argument ('I am presenting myself by executing
> this
>
> > > sentence :)') discards it and anonymously reproduces an exact copy of
>
> > > itself, and so on until there are no more arguments and the reproduced
>
> > verb
>
> > > shows up.
>
> > >
>
> > > The verb, with the aid of the Tacit Toolkit mentioned often in the
>
> > > Adverbial Tacit Jym thread, can be written easily as a one-liner,
>
> > >
>
> > > WhoAmI=. (body f.<adv)&(body=. ([ amper >)x [ echo y)f.
>
> > >
>
> > > It uses the typical ancient trick that self-reproducing beings employ
>
> > > (e.g., living beings): The whole being (WhoAmI) consists of a
> description
>
> > > of the body (body f.<adv) bonded (&) to the body f. A variation of
> this
>
> > > verb provides the means for producing general verbs that seemingly take
>
> > > directly arguments as a strand (more on that later in a new thread).
>
> > >
>
> > > A self-contained version of WhoAmI can also be written as a
>
> > > slightly longer one-liner (beware of line wrapping),
>
> > >
>
> > > WhoAmI=. (<@:(,^:(0:`(<'f.')))'body')&(body=. ([ (,^:(0:`(<'&')))
>
> > >)@:[
>
> > > [ echo @:])f.
>
> > >
>
> > > Incidentally, the display of the following sentence is slightly
> different
>
> > > from the output in my original post (it includes extra blank lines
>
> > > corresponding to the empty literals (''). It seems that JQT and JHS
> are
>
> > > NOT behaving exactly in the same way. I am running here Win JQt05
>
> > whereas
>
> > > I produced the original output with Safari on an iPad as a client of a
>
> > > custom JHS on a Kindle Paperwhite server but I just confirmed that Win
>
> > > JHS05 with MS Edge produces the same output (without extra blank
> lines).
>
> > >
>
> > > WhoAmI '' 'I am presenting myself by executing this sentence :)' ''
>
> > > 'Spoiler coming in,' '' (,.|.i.33) '' (|.'...brev gnicudorper-fles eht
> ma
>
> > > I') ''
>
> > >
>
> > > I am presenting myself by executing this sentence :)
>
> > >
>
> > > Spoiler coming in,
>
> > >
>
> > > 32
>
> > > 31
>
> > > 30
>
> > > 29
>
> > > 28
>
> > > 27
>
> > > 26
>
> > > 25
>
> > > 24
>
> > > 23
>
> > > 22
>
> > > 21
>
> > > 20
>
> > > 19
>
> > > 18
>
> > > 17
>
> > > 16
>
> > > 15
>
> > > 14
>
> > > 13
>
> > > 12
>
> > > 11
>
> > > 10
>
> > > 9
>
> > > 8
>
> > > 7
>
> > > 6
>
> > > 5
>
> > > 4
>
> > > 3
>
> > > 2
>
> > > 1
>
> > > 0
>
> > >
>
> > > I am the self-reproducing verb...
>
> > >
>
> > > (<([ ,^:(0:`&) >)@:[ [ 0 0&$@(1!:2&2)@:])&(([ ,^:(0:`&) >)@:[ [ 0
>
> > > 0&$@(1!:2&2)@:])
>
> > >
>
> > >
>
> > >
>
> > > On Thu, Mar 23, 2017 at 11:26 AM, Jose Mario Quintana <
>
> > > [email protected]> wrote:
>
> > >
>
> > > > Sure, the little puzzle, even after the spoiler, is not that easy :)
>
> > ...
>
> > > > Notice the smiley at the end of
>
> > > > 'I am presenting myself by executing this sentence :)'
>
> > > >
>
> > > > There is no way the poor old untrusty linear representation (LR) ;)
>
> > can
>
> > > > faithfully represent WhoAmI for two reasons (another spoiler
> follows
>
> > > > after a few blank lines):
>
> > > >
>
> > > >
>
> > > >
>
> > > >
>
> > > >
>
> > > >
>
> > > >
>
> > > >
>
> > > >
>
> > > >
>
> > > >
>
> > > >
>
> > > > First, the Superbug is pestering the LR of certain embedded gerunds,
>
> > for
>
> > > > example,
>
> > > >
>
> > > > ^:(0:`(<'&'))
>
> > > > ^:(0:`&)
>
> > > >
>
> > > > Last, but certainly not least, the LR is trying its best to deal
> with a
>
> > > > noun that, arguably, should not be part of J's reality but
> fortunately
>
> > it
>
> > > > is. That is, a box containing a verb (in my mind this is the
> simplest
>
> > > way
>
> > > > for a noun to represent a verb , adverb or conjunction; to recover
> the
>
> > > word
>
> > > > just open the box); for example, if V is a box containing the
> verb *
>
> > > > then,
>
> > > >
>
> > > > V
>
> > > > ┌─┐
>
> > > > │*│
>
> > > > └─┘
>
> > > > (5!:5)<'V'
>
> > > > <*
>
> > > >
>
> > > > Later I will show how I produced the recurrent verb WhoAmI which
> is,
>
> > > > giving the illusion of, taking arguments as a strand.
>
> > > >
>
> > > >
>
> > > >
>
> > > >
>
> > > >
>
> > > > On Thu, Mar 23, 2017 at 12:15 AM, 'Pascal Jasmin' via Programming <
>
> > > > [email protected]> wrote:
>
> > > >
>
> > > >> get syntax error
>
> > > >>
>
> > > >>
>
> > > >>
>
> > > >>
>
> > > >> ________________________________
>
> > > >> From: Jose Mario Quintana <[email protected]>
>
> > > >> To: "[email protected]" <[email protected]>
>
> > > >> Sent: Wednesday, March 22, 2017 11:44 PM
>
> > > >> Subject: Re: [Jprogramming] introducing j plus plus
>
> > > >>
>
> > > >>
>
> > > >>
>
> > > >> Thanks for the feedback Pascal. I just realized that I might have
>
> > used
>
> > > >> tacit anonymous continuations inadverterdly when I wrote, in Jx, the
>
> > > tacit
>
> > > >> recurrent (aka multiple) adverbs sa and sna which can convert
>
> > > >> adverbs taking arguments as a gerund into adverbs taking arguments
>
> > as a
>
> > > >> strand [0]. Incidentally, I have rewriten similar versions of
>
> > > >> adverbs which run in official J interpreters but that should be a
>
> > > subject
>
> > > >> for another thread in another time.
>
> > > >>
>
> > > >> In the meantime the following is a little puzzle in the same vain:
>
> > > >>
>
> > > >>
>
> > > >> WhoAmI '' 'I am presenting myself by executing this sentence :)' ''
>
> > > >> 'Spoiler coming in,' '' (,.|.i.33) '' (|.'...brev gnicudorper-fles
> eht
>
> > > >> ma I') ''
>
> > > >> I am presenting myself by executing this sentence :)
>
> > > >> Spoiler coming in,
>
> > > >> 32
>
> > > >> 31
>
> > > >> 30
>
> > > >> 29
>
> > > >> 28
>
> > > >> 27
>
> > > >> 26
>
> > > >> 25
>
> > > >> 24
>
> > > >> 23
>
> > > >> 22
>
> > > >> 21
>
> > > >> 20
>
> > > >> 19
>
> > > >> 18
>
> > > >> 17
>
> > > >> 16
>
> > > >> 15
>
> > > >> 14
>
> > > >> 13
>
> > > >> 12
>
> > > >> 11
>
> > > >> 10
>
> > > >> 9
>
> > > >> 8
>
> > > >> 7
>
> > > >> 6
>
> > > >> 5
>
> > > >> 4
>
> > > >> 3
>
> > > >> 2
>
> > > >> 1
>
> > > >> 0
>
> > > >> I am the self-reproducing verb...
>
> > > >> (<([ ,^:(0:`&) >)@:[ [ 0 0&$@(1!:2&2)@:])&(([ ,^:(0:`&) >)@:[ [ 0
>
> > > >> 0&$@(1!:2&2)@:])
>
> > > >>
>
> > > >>
>
> > > >> [0] [Jprogramming] Tacit recursion without $:
>
> > > >>
>
> > > >> *
>
> > > >> http://www.jsoftware.com/pipermail/programming/2014-February
>
> > > /035416.html
>
> > > >> <http://www.jsoftware.com/pipermail/programming/2014-Februar
>
> > > y/035416.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
>
> > >
>
> > ----------------------------------------------------------------------
>
> > 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