It's a boxed list of verb names. Gerind: a noun with the force of a verb. On Mon, Sep 3, 2018, 9:57 AM Raul Miller <[email protected]> wrote:
> A gerund is a different data type from a verb. > > (Jose has been playing with an exploit which lets gerunds contain verbs.) > > Thanks, > > — > Raul > > On Sunday, September 2, 2018, 'Pascal Jasmin' via Programming < > [email protected]> wrote: > > > I believe you are referring to an unreleased beta? > > +:`'' creates a rank 1 gerund? +:`'' `:6 would crash? > > beta i does not crash doing this. So I am likely misunderstanding what > > you suggest "should" crash, and that perhaps a more gentle behaviour > could > > be requested once I do understand what is meant by a crash condition. > > > > > > On Sunday, September 2, 2018, 11:10:25 a.m. EDT, Henry Rich < > > [email protected]> wrote: > > > > Pepe reported recently that some code using non-standard J (viz verbs > > that return non-nouns) stopped working for beta-g, and supplied an > example. > > > > In beta-g and later, code has been streamlined to take advantage of the > > fact that all verbs are internally represented as atoms with the VERB > > type. The failing code was trying to execute a block that was stored as > > a VERB type with rank 1. This now crashes. Converting verbs to atoms > > before execution might cover over the problem. > > > > Needless to say, there is no guarantee that non-standard code will be > > portable over machines, releases, or state lines. > > > > Henry Rich > > > > > > > > On 8/22/2018 6:16 PM, Jose Mario Quintana wrote: > > > I also think that instance conforms to the specification. A variant of > > ART > > > (perhaps more direct) is, > > > > > > ART=. (an`(0 { '' tie~ ]))@.(2097152 = 3!:0) adv > > > > > > > > > On Wed, Aug 22, 2018 at 9:44 AM, Raul Miller <[email protected]> > > wrote: > > > > > >> (I thought that this was documented behavior?) > > >> > > >> Thanks, > > >> > > >> — > > >> Raul > > >> > > >> On Wednesday, August 22, 2018, 'Pascal Jasmin' via Programming < > > >> [email protected]> wrote: > > >> > > >>> You've brought up another undocumented feature. > > >>> '' $ 1 > > >>> 1 > > >>> '' $ , 1 > > >>> > > >>> 1 > > >>> '' $ i.2 2 > > >>> 0 1 > > >>> > > >>> '' $ 1 2 > > >>> 1 > > >>> '' $ ,: 1 2 > > >>> > > >>> 1 2 > > >>> > > >>> '' $ i.0 > > >>> > > >>> |length error > > >>> > > >>> > > >>> > > >>> '' $ y returns the first item of y if one exists. The difference > with > > {. > > >>> is that the latter will fill if no item exists. > > >>> > > >>> > > >>> > > >>> On Tuesday, August 21, 2018, 5:12:37 p.m. EDT, Jose Mario > > Quintana < > > >>> [email protected]> wrote: > > >>> > > >>> > (2097152 = 3!:0) is undocumented magic that detects a verb > (phrase). > > >> Is > > >>> there any similar magic number that > would detect a string/ar > > >>> representation of modifiers? > > >>> > > >>> Yes, I normally mask the standard library verb datatype (datatype_z_) > > >> with > > >>> this alternative version, > > >>> > > >>> datatype=. (<;._1 > > >>> '|boolean|literal|integer|floating|complex|boxed|extended| > > >> rational|sparse > > >>> boolean |sparse literal|sparse integer|sparse floating|sparse > > >>> complex|sparse boxed |symbol > > >>> |unicode|unicode4|?|?|verb|adverb|conjunction') >@{~ 1 2 4 8 16 32 64 > > >> 128 > > >>> 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 > > >> 2097152 > > >>> 4194304 8388608 i. 3!:0 > > >>> > > >>> Wrap=. -@:[ ]\ 5!:5@<@:] > > >>> > > >>> 66 Wrap '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 > > >>> > > >>> (changing what needs to be changed for early interpreters). ;) > > >>> > > >>> So, > > >>> > > >>> datatype 0j1 > > >>> complex > > >>> datatype 'I am a literal...' > > >>> literal > > >>> > > >>> I_am_an_unassigned_verb > > >>> |value error: I_am_an_unassigned_verb > > >>> |[-3] > > >>> I_am_an_unassigned_verb datatype adv > > >>> verb > > >>> datatype datatype adv > > >>> verb > > >>> > > >>> datatype o train <'/' > > >>> adverb > > >>> datatype o train <'adv' > > >>> adverb > > >>> > > >>> datatype o train <'&' > > >>> conjunction > > >>> datatype o train <'bind' > > >>> conjunction > > >>> > > >>>> works, but '' tie + will just return a fork. > > >>>> '' $ ... portion of the fork in ART does not have an obvious > purpose. > > >>>> ART2=. (an`('' tie~ ]))@.(2097152 = 3!:0) adv NB. seems to work in > > >>> examples. > > >>>> regarding your comments about (`'') not a real gerund, > > >>> Both remarks are related; first, allow me to clarify that (`'') > > produces > > >>> "real" gerunds. My actual comment was "the gerundial representation > > >>> produced by (`'') technically is not an ar [atomic representation]." > > An > > >>> atomic representation, as its name implies, is an atom (i.e., it has > > rank > > >>> 0); in contrast, for a verb argument, (`'') produces a gerund having > > >> rank 1 > > >>> which is not an atom. That is the reason why both, > > >>> > > >>> (toJ f.)AR D > > >>> ((10{a.) I.@(e.&(13{a.))@]} ])@:(#~ -.@((13 10{a.)&E.@,)) > > >>> > > >>> and > > >>> > > >>> (toJ f.)ART D > > >>> ((10{a.) I.@(e.&(13{a.))@]} ])@:(#~ -.@((13 10{a.)&E.@,)) > > >>> > > >>> work (i.e., produce atomic representations confirmed by D); but, both > > >>> > > >>> (toJ f.)(`'') D > > >>> |rank error: D > > >>> | (toJ f.)(`'') D > > >>> > > >>> and > > >>> > > >>> (toJ f.)ART2 D > > >>> |rank error: D > > >>> | (toJ f.)ART2 D > > >>> > > >>> fail and report a rank error. > > >>> > > >>> > > >>> On Mon, Aug 20, 2018 at 8:52 PM, 'Pascal Jasmin' via Programming < > > >>> [email protected]> wrote: > > >>> > > >>>> awesome Pepe, > > >>>> just some additional explanations if it helps others, (and some > > >>> questions) > > >>>> tie is a verb version of ` . In: > > >>>> ART=. (an`('' $ '' tie~ ]))@.(2097152 = 3!:0) adv > > >>>> > > >>>> the left side of @. must be verbs. > > >>>> (2097152 = 3!:0) is undocumented magic that detects a verb (phrase). > > >> Is > > >>>> there any similar magic number that would detect a string/ar > > >>> representation > > >>>> of modifiers? > > >>>> > > >>>> > > >>>> - tie&'' adv > > >>>> > > >>>> ┌─┐ > > >>>> > > >>>> │-│ > > >>>> > > >>>> └─┘ > > >>>> > > >>>> works, but '' tie + will just return a fork. > > >>>> '' $ ... portion of the fork in ART does not have an obvious > purpose. > > >>>> ART2=. (an`('' tie~ ]))@.(2097152 = 3!:0) adv NB. seems to work in > > >>>> examples. > > >>>> > > >>>> > > >>>> regarding your comments about (`'') not a real gerund, > > >>>> > > >>>> ({. +@- (`'')) 5!:0 NB. adds a shape. > > >>>> +@- > > >>>> +@- (`'') {. adv D NB. alternate of above > > >>>> > > >>>> > > >>>> ( +@- (`'')) `:6 NB `:6 not fooled > > >>>> > > >>>> +@- > > >>>> > > >>>> > > >>>> On Monday, August 20, 2018, 7:40:39 p.m. EDT, Jose Mario > Quintana < > > >>>> [email protected]> wrote: > > >>>> > > >>>> In the related thread "[Jprogramming] Applying an adverb to a > > >>> list/gerund > > >>>> of verbs" (see the trailing post) Pascal wrote: > > >>>> > > >>>>> Thank you Jose, > > >>>> You are welcome Pascal (feel free to call me Pepe which is Jose's > > >>>> nickname). > > >>>> > > >>>> > > >>>>> Would you by any chance have figured out a way to make AR tacit? > > >>>>> *: AR is so much easier to "call"/type than ar '*:' > > >>>>> (`'') almost works, though "fails" with nouns, but is useful for > an > > >>>> argument that can be verb or gerund. > > >>>> > > >>>> I had not produced a tacit version of AR because, personally, I did > > not > > >>>> have the need despite the fact that I use the atomic representation > > >> (ar) > > >>> of > > >>>> words (nouns, verbs, adverbs, and conjunctions) directly from time > > to > > >>>> time. (Why I do not need a tacit AR? More on that later). I will > > >>> mention > > >>>> some things, which I am sure you know, for the potential benefit of > > >> other > > >>>> members of the forum. As usual, one could always go the hard > orthodox > > >>> way > > >>>> (in principle, at least). However, I like the easy wicked way > because > > >> I > > >>> am > > >>>> naturally lazy. > > >>>> > > >>>> First a word of caution, the wicked way relies on an apparent > internal > > >>>> design architecture feature of the J interpreters ( which treats J > > >> words > > >>>> the same in a fairly general sense) to perform illegal operations; > > this > > >>>> makes possible to produce any kind of adverb in a tacit form, > > including > > >>>> verb producing adverbs that refer (tacitly, of course) to the > > arguments > > >>> of > > >>>> the verbs produced. > > >>>> > > >>>> I have followed the wicked way for several years using different > > >> versions > > >>>> of J interpreters; but, as Martin Nietzel put it recently "We are in > > >>> twisty > > >>>> little maze of J versions, all alike." I have noticed a slight > > erosion > > >>> of > > >>>> the aforementioned feature in the J805 and j06 interpreters. A more > > >>>> significant deterioration happened from J807 beta-e to beta-g. The > > >> J804, > > >>>> J805, J805 and J807 beta-e interpreters just bend and comply while > > >>> running > > >>>> the J Wicked Toolkit script [0]; in contrast, the J807 beta-g > > >> interpreter > > >>>> snaps. Likely, the wicked way will be somewhat compromised in > future > > >>>> official stable versions of the interpreter. Perhaps, the wicked > way > > >>> will > > >>>> be banned altogether and no black magic will be allowed. (It is > black > > >>>> magic in J but it is white magic in many other programming languages > > >> that > > >>>> embrace higher-order functions). > > >>>> > > >>>> The above notwithstanding, what follows runs fine even on the J807 > > >> beta-g > > >>>> interpreter. > > >>>> > > >>>> Henceforth I am assuming that the sentences of the post below, up to > > >> the > > >>>> production of AR, have been run: that is, > > >>>> > > >>>> (9!:3) 5 2 NB. Box and linear representations... > > >>>> . > > >>>> . > > >>>> . > > >>>> AR=: 1 : '5!:1 <''u''' > > >>>> > > >>>> We can begin with the simple case when the argument of AR is noun, > > >>>> > > >>>> D=. 5!:0 NB. DoJ: Define. 5!:0 is an adverb and provides a complete > > >>> inverse > > >>>> of 5!:1. ( T=. i.2 3 ) 0 1 2 3 4 5 ar'T' ┌─────────┐ │┌─┬─────┐│ > ││0│0 > > >> 1 > > >>>> 2││ ││ │3 4 5││ │└─┴─────┘│ └─────────┘ (ar'T') D 0 1 2 3 4 5 > > >>>> > > >>>> A tacit version of AR is, > > >>>> > > >>>> ART=. an f.adv T ART ┌─────────┐ │┌─┬─────┐│ ││0│0 1 2││ ││ │3 4 5││ > > >>>> │└─┴─────┘│ └─────────┘ (i.2 3) ART ┌─────────┐ │┌─┬─────┐│ ││0│0 1 > > 2││ > > >>> ││ > > >>>> │3 4 5││ │└─┴─────┘│ └─────────┘ (i.2 3) ART D 0 1 2 3 4 5 > > >>>> > > >>>> Of course, if the argument of ART is a verb then we will need > > something > > >>>> more elaborated... Actually, that is not necessarily the case! For > > >>>> instance, > > >>>> > > >>>> +/@:*: ART > > >>>> > > >>>> ┌──────────┐ > > >>>> > > >>>> │┌─┬──────┐│ > > >>>> > > >>>> ││0│+/@:*:││ > > >>>> > > >>>> │└─┴──────┘│ > > >>>> > > >>>> └──────────┘ > > >>>> > > >>>> > > >>>> is an illegal noun; yet, as far as the interpreter is concerned, it > is > > >> an > > >>>> ar of +/@:*: > > >>>> > > >>>> > > >>>> +/@:*: ART D > > >>>> +/@:*: > > >>>> ┌─────┬──┬──┐ > > >>>> │┌─┬─┐│@:│*:│ > > >>>> ││+│/││ │ │ > > >>>> │└─┴─┘│ │ │ > > >>>> └─────┴──┴──┘ > > >>>> > > >>>> and it can be used, as a whole, in place of the actual ar (not > tested > > >> it > > >>>> much with the beta interpreters); for example, > > >>>> > > >>>> > > >>>> (+/@:*: ART`:6) 1 2 3 14 > > >>>> > > >>>> There are instances where one might require the real thing for > > internal > > >>>> inspection and modification of a verb structure (for example, to > > >> replace > > >>>> the all its components of the form [: u v by (u@:v)). > > >>>> > > >>>> > > >>>> In that case, the following version should work, > > >>>> > > >>>> tie=. (<'`') (0:`)(,^:) > > >>>> > > >>>> ART=. (an`('' $ '' tie~ ]))@.(2097152 = 3!:0) adv > > >>>> > > >>>> (use 262144 instead of 2097152 for earlier versions of the > interpreter > > >> if > > >>>> necessary); for example, > > >>>> > > >>>> (i.2 3) ART > > >>>> ┌─────────┐ > > >>>> │┌─┬─────┐│ > > >>>> ││0│0 1 2││ > > >>>> ││ │3 4 5││ > > >>>> │└─┴─────┘│ > > >>>> └─────────┘ > > >>>> > > >>>> u@:v AR > > >>>> ┌──────────┐ > > >>>> │┌──┬─────┐│ > > >>>> ││@:│┌─┬─┐││ > > >>>> ││ ││u│v│││ > > >>>> ││ │└─┴─┘││ > > >>>> │└──┴─────┘│ > > >>>> └──────────┘ > > >>>> > > >>>> u@:v ART D > > >>>> u@:v > > >>>> ┌─┬──┬─┐ > > >>>> │u│@:│v│ > > >>>> └─┴──┴─┘ > > >>>> > > >>>> (toCRLF f.ART) -: (toCRLF f.AR) > > >>>> 1 > > >>>> > > >>>> By the way, the gerundial representation produced by (`'') > technically > > >> is > > >>>> not an ar; for example, > > >>>> > > >>>> u@:v (`'') D > > >>>> |rank error: D > > >>>> | u@:v(`'') D > > >>>> > > >>>> PS. I had not produced ART before because I have access to a custom > > >>>> foreign which allows to use verbs that require named words (e.g. > > >> (4!:0), > > >>>> (5!:1), (5!:2), etc.) namelessly. > > >>>> > > >>>> Reference > > >>>> > > >>>> [0] J Wicked Toolkit > > >>>> http://www.2bestsystems.com/foundation/j/Jx.zip > > >>>> \Jx\J\J Wicked Toolkit.ijs > > >>>> > > >>>> > > >>>> > > >>>> > > >>>> > > >>>> On Thu, Aug 16, 2018 at 11:21 PM, 'Pascal Jasmin' via Programming < > > >>>> [email protected]> wrote: > > >>>> > > >>>>> Thank you Jose, > > >>>>> Would you by any chance have figured out a way to make AR tacit? > > >>>>> *: AR is so much easier to "call"/type than ar '*:' > > >>>>> (`'') almost works, though "fails" with nouns, but is useful for > an > > >>>>> argument that can be verb or gerund. > > >>>>> On Thursday, August 16, 2018, 7:48:47 p.m. EDT, Jose Mario > > >> Quintana > > >>> < > > >>>>> [email protected]> wrote: > > >>>>> > > >>>>> One the one hand, I find your adverb neat and clever. On the > other > > >>>> hand, > > >>>>> I > > >>>>> like them beautiful and powerful. ;) > > >>>>> > > >>>>> Powerful? > > >>>>> > > >>>>> (9!:3) 5 2 NB. Box and linear representations... > > >>>>> > > >>>>> > > >>>>> o=. @: > > >>>>> c=. "_ > > >>>>> > > >>>>> ar=. 5!:1@:< > > >>>>> an=. <@:((,'0') ,&:< ])f. NB. Atomizing (monadic verb) > > >>>>> > > >>>>> d=. (a0=. `'') (a1=. (@:[) ((<'&')`) (`:6)) (a2=. (`(<(":0);_)) > > >> (`:6)) > > >>>>> av=. ((ar'a0')`) (`(ar'a1')) (`(ar'a2') ) (`:6) > > >>>>> NB. Adverbing a monadic verb (adv) > > >>>>> assert 1 4 9 -: 1 2 3 *: av > > >>>>> > > >>>>> train=. (<'`:') (0:`)(,^:)&6 > > >>>>> fix=. (<'f.') (0:`)(,^:) > > >>>>> > > >>>>> af=. an o fix f. NB. Atomizing after fixing a word (monadic verb) > > >>>>> aw=. < o ((0;1;0)&{::) NB. Fetching the atomic representation > > >>> (monadic > > >>>>> verb) > > >>>>> a3=. (o (train o aw f.)) ('av'f.) > > >>>>> NB. train o aw gets the (noun or verb) argument > > >>>>> > > >>>>> adv=. train o ((af'c') ; ] ; (af'a3')c) f.av > > >>>>> > > >>>>> The motivation for producing the tacit adverb adv was to reduce > > >>> directly > > >>>>> the production of tacit adverbs to the production of tacit verbs, > > >>>>> > > >>>>> ag=. (0:`)(,^:) (<@:) (@:(train f.))("0) (train f.@:([ ; > (,<,',') ; > > >>>>> ])&>/@:) > > >>>>> > > >>>>> A=. @:] > > >>>>> > > >>>>> Ad=. ag adv > > >>>>> > > >>>>> v1`v2`v3`v4 (ar'A')Ad > > >>>>> v1@:] , v2@:] , v3@:] , v4@:] > > >>>>> ┌─────────┬─┬─────────────────────────────────────┐ > > >>>>> │┌──┬──┬─┐│,│┌─────────┬─┬───────────────────────┐│ > > >>>>> ││v1│@:│]││ ││┌──┬──┬─┐│,│┌─────────┬─┬─────────┐││ > > >>>>> │└──┴──┴─┘│ │││v2│@:│]││ ││┌──┬──┬─┐│,│┌──┬──┬─┐│││ > > >>>>> │ │ ││└──┴──┴─┘│ │││v3│@:│]││ ││v4│@:│]││││ > > >>>>> │ │ ││ │ ││└──┴──┴─┘│ │└──┴──┴─┘│││ > > >>>>> │ │ ││ │ │└─────────┴─┴─────────┘││ > > >>>>> │ │ │└─────────┴─┴───────────────────────┘│ > > >>>>> └─────────┴─┴─────────────────────────────────────┘ > > >>>>> > > >>>>> AR=: 1 : '5!:1 <''u''' > > >>>>> advE =: 1 : 'AR(u`)(`:6)' > > >>>>> > > >>>>> AdE=. ag advE > > >>>>> > > >>>>> v1`v2`v3`v4 (ar'A')AdE > > >>>>> v1@:] , v2@:] , v3@:] , v4@:] > > >>>>> ┌─────────┬─┬─────────────────────────────────────┐ > > >>>>> │┌──┬──┬─┐│,│┌─────────┬─┬───────────────────────┐│ > > >>>>> ││v1│@:│]││ ││┌──┬──┬─┐│,│┌─────────┬─┬─────────┐││ > > >>>>> │└──┴──┴─┘│ │││v2│@:│]││ ││┌──┬──┬─┐│,│┌──┬──┬─┐│││ > > >>>>> │ │ ││└──┴──┴─┘│ │││v3│@:│]││ ││v4│@:│]││││ > > >>>>> │ │ ││ │ ││└──┴──┴─┘│ │└──┴──┴─┘│││ > > >>>>> │ │ ││ │ │└─────────┴─┴─────────┘││ > > >>>>> │ │ │└─────────┴─┴───────────────────────┘│ > > >>>>> └─────────┴─┴─────────────────────────────────────┘ > > >>>>> > > >>>>> (By the way, you might appreciate that both adv and advE, in this > > >>>> context, > > >>>>> are acting as triple (Curried) adverbs.) > > >>>>> > > >>>>> The end result is the same; however, one important difference is > that > > >>>>> (ar'A')Ad is tacit but (ar'A')Ad is not (because AR is not tacit). > > >>>> Recall, > > >>>>> Piet Google was asking for "a (tacit) way to apply an adverb to > each > > >>> of a > > >>>>> list of verbs." > > >>>>> > > >>>>> Furthermore, adv has the implicit tacit power (provided by > > >> (0:`)(,^:)) > > >>> to > > >>>>> perform forbidden tricks that advE cannot; adv actually applies its > > >>>>> argument verb to the argument of the resulting adverb even if that > > >>>> argument > > >>>>> happens to be a verb; for example, > > >>>>> > > >>>>> *: <adv > > >>>>> ┌──┐ > > >>>>> │*:│ > > >>>>> └──┘ > > >>>>> > > >>>>> boxes *:, > > >>>>> > > >>>>> > *: <adv 1 2 3 > > >>>>> 1 4 9 > > >>>>> > > >>>>> In contrast, > > >>>>> > > >>>>> *: <advE > > >>>>> < *: > > >>>>> ┌─┬──┐ > > >>>>> │<│*:│ > > >>>>> └─┴──┘ > > >>>>> > *: <advE 1 2 3 > > >>>>> 0 1 1 > > >>>>> > > >>>>> > > >>>>> On Thu, Aug 16, 2018 at 3:11 PM, 'Pascal Jasmin' via Programming < > > >>>>> [email protected]> wrote: > > >>>>> > > >>>>>> A simpler version of your usual adv definition, that seems pretty > > >>>> clean > > >>>>>> (without my usual processing) > > >>>>>> > > >>>>>> AR=: 1 : '5!:1 <''u''' > > >>>>>> adv =: 1 : 'AR(u`)(`:6)' > > >>>>>> > > >>>>>> > > >>>>>> 1 2 3 *: adv > > >>>>>> > > >>>>>> 1 4 9 > > >>>>>> > > >>>>>> not sure if this works with all your utilities. > > >>>>> > > >>>> ------------------------------------------------------------ > > ---------- > > >>>> 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 > > > > > > --- > > This email has been checked for viruses by AVG. > > https://www.avg.com > > > > ---------------------------------------------------------------------- > > 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
