(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

Reply via email to