Pascal wrote:
"
The reason I am nearly sure is that in u@:v any adverbs applied to v also
apply to u in such a way that it would seem compliacated to undo/avoid.  It
can still be applied to all with ([: u v)a .  But the option of ([: u  v a)
remains.
"

This is an interesting argument in favor of [: vs @: which I have not heard
before.  However, personally I never wished that, u@:v a parsed as u@:(v
a);  perhaps because I use the form (u@:v)a roughly as frequently as u@:(v
a).

Be as it may, you could write, of course:

   'u0 u1 u2 u3 u4 y' (13 :)
[: u0 [: u1 [: u2 [: u3 u4

to get the cap form although with all the associated explicit caveats or,
even better, you could write your own adverb (Cap) such that:

   [:u0 u1 u2 u3 u4 Cap
[: u0 [: u1 [: u2 [: u3 u4

This is so easy to accomplish tacitly nowadays using a wicked adverb (sv)
described also in [0]:

   ( cap=. ([: [:cv [ ] Train) )
train@:(>@:((<[:)"_) ; [ ; ])

   Cap=. train o (cap&:train/) f.sv

[0] Tacit recursion without $:

http://www.jsoftware.com/pipermail/programming/2014-February/035416.html




On Thu, Aug 7, 2014 at 8:52 PM, 'Pascal Jasmin' via Programming <
[email protected]> wrote:

> > Are you sure [: is a better combiner than @: ?
>
> The reason I am nearly sure is that in u@:v any adverbs applied to v also
> apply to u in such a way that it would seem compliacated to undo/avoid.  It
> can still be applied to all with ([: u v)a .  But the option of ([: u  v a)
> remains.
>
> So with my primitive techniques I might write a cap adverb such that
>
> 'u1 a1 u2 a2' cap a3 would get converted to:
> ([: u1 a1 u2 a2) a3
>
> I understand the same can be achieved with parentheses and @:.  Perhaps my
> eyes are more sensitive to those.
>
> Your point about the variables u and v causing crashes/errors is real, and
> I've tripped up on my own code before because of it.  I think its a good
> argument for bringing tacit equivalents to u and v that used to be in the
> language (IIRC, [. ].)
>
>
> ----- Original Message -----
> From: Jose Mario Quintana <[email protected]>
> To: Programming forum <[email protected]>
> Cc:
> Sent: Thursday, August 7, 2014 8:19:07 PM
> Subject: Re: [Jprogramming] parsing abuse, verb to conjunction
>
> Pascal wrote:
> "
>    '* %' eval
> * %
> "
>
> Yes, one can write an explicit adverb (eval) to evaluate strings.  One can
> even write a fixed tacit adverb to evaluate strings; Dan’s anonymous evoke
> (ae) is such an adverb but (even with some limitations) it is complicated
> [0].  This was the motivation for implementing the adverb wl=. 104!:1 in
> extended J.  Thus,
>
>    '% *'eval
> % *
>    '% *'ae
> % *
>    '% *'wl
> % *
>
> So far everything is fine; but,
>
>    'v=: % *'eval
> % *
>    v
> % *
>    erase'v'
> 1
>    'v=: % *'ae
> |domain error
> |       a:@.a:
>
>    'v=: % *'wl
>    v
> % *
>
>    erase'v'
> 1
>
>    u v
> u v
>    'u v'eval
> |value error: v
> |   u     v
>
>    'u v'ae
> u v
>    'u v'wl
> u v
>
>    'u=. * %'eval
> * %
>    u
> |value error: u
> |[-0]
>
>    'u=. * %'ae
> |domain error
> |       a:@.a:
>
>    'u=. * %'wl
>    u
> * %
>
>
> In other words, explicit definitions refer directly to arguments in a local
> environment and an explicit (hybrid) writer has to worry about those
> issues.
>
> Nevertheless, all this is beside the point that I was trying to make:
> writing tacitly the common form of a conjunction taking two verbs directly
> (as opposed to verb representations) is not possible (as far as I can see)
> using the official J interpreter; not even for a simple conjunction that
> produces a hook.
>
> Pascal also wrote
> "
>    '*' (; v2c ) '%' `:6
> * %
>     '*' '%' (CONJ '; v2c') `:6
> % *
>     '*' '%' (CONJs '; v2c') (`:6)
> * %
> "
>
> Further, one can obviously write the adverb a0=. `:6 such that:
>
>    u`v a0
> u v
>
> Once an adverb is written in this common form it is straightforward to
> write a related adverb (a1) that takes directly the two verbs in strand
> form (abusing the concealed capabilities of evoke (`:6)):
>
>    u v a1
> u v
>
> How?  Writing:  a1=. ((<'`')`)(`(<@:(5!:1)@:<'a0')) (`:6)
>
> Writing (u v a1) to get (u v) almost defeats its purpose but (u v) in (u v
> a1) is not a train:
>
>    u (v a1)
> u v
>    (v a1)
> (`v)(`:6)
>
> Now after all some puzzling sentences follow: :D
>
>    u v a0
> u v
>    u (v a0)
> u v
>
>    v a0
> |value error: v
> |[-13]
> Finally, Pascal wrote:
> "
> ]: is very interesting, though I'm still unsure that @: is a better
> combiner than [:
> "
>
> Are you sure [: is a better combiner than @: ?
>
>
> [0] Dan’s anonymous evoke
>
> http://www.jsoftware.com/svn/DanBron/trunk/environment/anonymous_evoke2.ijs
>
>
>
>
>
> On Wed, Aug 6, 2014 at 8:22 PM, 'Pascal Jasmin' via Programming <
> [email protected]> wrote:
>
> > thank you for sharing, Pepe
> >
> > your conj looks better for sure.
> >
> > thought, there is:
> >
> >    '*' (; v2c ) '%' `:6
> > * %
> >    '*' '%' (CONJ '; v2c') `:6
> > % *
> >    '*' '%' (CONJs '; v2c') (`:6)
> > * %
> >
> >    '* %' eval
> > * %
> >
> > where:
> > CONJ =: 2 : ' u (v eval)'
> > CONJs=: 2 : 'v eval u'
> >
> > these turn a conjunction into a "double adverb"
> >
> > ]: is very interesting, though I'm still unsure that @: is a better
> > combiner than [:
> >
> >
> >
> >
> > ----- Original Message -----
> > From: Jose Mario Quintana <[email protected]>
> > To: Programming forum <[email protected]>
> > Cc:
> > Sent: Wednesday, August 6, 2014 6:35:19 PM
> > Subject: Re: [Jprogramming] parsing abuse, verb to conjunction
> >
> > Pascal wrote:
> > "
> > this adverb returns a conjunction which is designed to turn any dyadic
> verb
> > into a conjunction
> > "
> >
> > You might be interested to know that this is also what the adverb (conj)
> > defined in [0] does; however, it is tacit, fixed and does not rely on
> > linear representations which makes it immune to unwanted side effects and
> > linear representations potential mishaps:
> >
> >    NB. v2c...
> >
> >    5 (, v2c) 3 (2 1 , v2c)  + 4
> > 6 5 9 7
> >
> >    1 (4 :'x+y') 1
> > 2
> >    1 (4 :'x+y' v2c) 1
> > 2
> >    1 (4 :('assert. x>0';'x+y')) 1
> > 2
> >    1 (4 :('assert. x>0';'x+y') v2c) 1
> > (1) (2 : 0) 1
> > m 4 : 0
> > assert. x>0
> > x+y
> > ) n
> > )
> >
> >    NB. conj...
> >
> >    5 (, conj) 3 (2 1 , conj)  + 4
> > 6 5 9 7
> >
> >    1 (4 :'x+y') 1
> > 2
> >    1 (4 :'x+y'conj) 1
> > 2
> >    1 (4 :('assert. x>0';'x+y')) 1
> > 2
> >    1 (4 :('assert. x>0';'x+y')conj) 1
> > 2
> >
> > The primary objective for defining it (conj) was to produce, via wicked
> > verbs, tacit conjunctions (which cannot be derived in the official
> version
> > J).  For example, hook can be defined tacitly as a conjunction as
> follows:
> >
> >    hook=. train @: ; f.conj
> >    * hook %
> > * %
> >
> > Unfortunately, v2c cannot be used for that purpose:
> >
> >    hook=. train @: ; v2c
> >    * hook %
> > |value error: n
> > |   m train@:;    n
> >
> > In the latest version of the extended J interpreter, not yet released,
> > conj, adv, verb and train can be defined as follows:
> >
> >    an=. <@:((":0) ,&< ])       NB. Atomizing a noun (monadic verb)
> >    fix=. (?:(f.an))            NB. Cloaking the adverb f. as a (monadic)
> > verb
> >    af=. an @: fix f.           NB. Atomizing after fixing (monadic verb)
> >    ew=. adverb ?: (af'an')     NB. Encasing a word (adv)
> >
> >    ver=. ?: @: an f.           NB. Cloaking an adverb or conjunction as a
> > verb (verb)
> >    adv=. 1 ?: ((1 ?: an f.)ew) NB. Cloaking (the monadic variant of) a
> verb
> > as an adverb (adv)
> >    conj=. (2 ?: an) f.adv      NB. Cloaking (the dyadic variant of) a
> verb
> > as a conjunction (adv)
> >    train=. (`:6)ver            NB. Cloaking (`:6) as a verb
> >
> > Notice also that, in this latest version, ]: has been replaced by ?:.
> > Why?  Because ]: has been re-implemented to emulate the adverb At defined
> > in [1].  Thus, for example, one can now write:
> >
> >    [:u0 u1 u2 u3 u4]:
> > u0@:u1@:u2@:u3@:u4
> >
> >    [:<./+/|-/~]:
> > <./@:(+/)@:|@:(-/~)
> >
> >
> > [0] Tacit recursion without $:
> >
> > http://www.jsoftware.com/pipermail/programming/2014-February/035416.html
> > [1] Tacit recursion without $:
> >    http://www.jsoftware.com/pipermail/programming/2014-March/035662.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

Reply via email to