I am very sorry to hear that; Jx is certainly not for the faint-hearted.

One of my favorite quotes is "the description is not the described."  Even
if one could have a recipe which is a perfect description for producing a
deliciously decadent meal; one cannot, or rather should not, eat the recipe.

I rather eat the meal sharing it with friends with the same kind of
taste...  Ah, the mundane pleasures of life!  :)



On Thu, Aug 3, 2017 at 12:44 PM, Raul Miller <rauldmil...@gmail.com> wrote:

> Personally, I'll be more impressed when I see documentation on the
> resulting grammar.
>
> I have had few problems creating code which uses inconsistent grammar.
>
> I can imagine the poetic delight in writing code which takes advantage
> of these ambiguities.
>
> I very much understand that this kind of thing can seem essential in
> relieving an otherwise oppressive sense of boredom.
>
> But documenting and debugging are the hard parts. And (and, in my
> opinion, even more essential).
>
> As for efficiency:
>
> “Overemphasis of efficiency leads to an unfortunate circularity in
> design: for reasons of efficiency early programming languages
> reflected the characteristics of the early computers, and each
> generation of computers reflects the needs of the programming
> languages of the preceding generation.” -Ken Iverson
>
> Thanks,
>
> --
> Raul
>
> On Thu, Aug 3, 2017 at 12:12 PM, Jose Mario Quintana
> <jose.mario.quint...@gmail.com> wrote:
> > A common objective of many Jx extensions is to unleash the latent power
> of
> > an official J interpreter to facilitate the use of higher-order functions
> > (verbs, adverbs and conjunctions) by providing the means to pass them,
> > directly, as arguments to other functions.
> >
> > Arguably, the Dictionary [0] only allows:
> >
> >   0. Verbs acting on nouns to produce nouns
> >   1. Adverbs and conjunctions acting on nouns or verbs to produce nouns,
> > verbs, adverbs or conjunctions
> >
> > The design reasons for these restrictions are mysterious to me; the most
> > plausible explanation that I am aware is given in the post [1].
> >
> > Ever since a back door was opened (an account of the story can be found
> in
> > the post[2]) I have been exploring the consequences of embracing
> high-order
> > functions in J (and particularly in Jx) from the perspective of tacit
> > adverbial (and tacit conjunctional) programming.  (Actually, just a few
> > weeks earlier I had been playing with what is now in Jx v1.0  the train
> > aspect of  "..  because I thought that complete adverbial programming was
> > possible with just that facility and it is possible as far as I can see;
> > this is why I realized immediately that Dan had opened a back door
> > inadvertently and I rushed through it).  It became apparent very soon to
> me
> > that there were many advantages when one can operate tacitly on verbs,
> > adverbs and conjunctions in a very similar way that one can operate on
> > nouns.
> >
> > Years ago I used to write adverbs and conjunctions tacitly via Jx
> foreigns
> > using literals (in a similar way that Pascal does it now albeit
> > explicitly).  I found it painful, in contrast, now it is a joy.  The
> > appendix shows a sample process.  It might look strange and puzzling;
> then
> > again, J programming might look strange and puzzling to the
> uninitiated.  A
> > key facility is the (higher-order) verb ?: used at the beginning of the
> > script to produce the pro-verb  ver  and the pro-adverbs  adv  and  conj.
> > These, respectively, allow for verbing adverbs and conjuncions, and
> reduce
> > tacit adverbial and conjunctional programming to to verbal programming
> > which happens to be Turing complete.
> >
> >
> > References
> >
> > [0] II. Grammar
> >     http://www.jsoftware.com/help/dictionary/dict2.htm
> >
> > [1] [Jprogramming] Recursive programming (and scoping therein)  William
> > Tanksley, Jr
> >     http://www.jsoftware.com/pipermail/programming/2013-
> February/031672.html
> >
> > [2] [Jprogramming] J functional programming extensions  Jose Mario
> Quintana
> >     http://www.jsoftware.com/pipermail/programming/2013-
> March/031883.html
> >
> >
> > Appendix
> >
> > The objective is to write a tacit adverb  At  for pipelining verbs with
> the
> > premise that space is the best delimiter, for example, given the verbs
> v0,
> > ... v4
> >
> >    [: v0 v1 v2 v3 v4 At
> > v0@:v1@:v2@:v3@:v4
> >
> > From the high-order functional perspective this should be a matter of
> > inserting  @:  between the verb arguments; actually, it is with some
> minor
> > caveats because verbs and conjunction do not associate the same way and
> the
> > default behavior of insert  /  for a single input is not adequate in this
> > case.
> >
> > First, a developing session from scratch, that resembles the original
> > development, is shown; followed by a session with the collected
> > definition(s) including an example; and last, the collected definition(s)
> > script.
> >
> > Beware of line-wrapping!
> >
> > Developing session...
> >
> >    JVERSION
> > Installer: j602a_win.exe
> > Engine: j806/j64/windows/beta/BEST/Jx/2017-07-27T10:25:25
> > Library: 6.02.023
> >
> >    o=. @:
> >    (;:'ver conj adv')=. _3 _2 _1<@:?:("0) 0
> >
> >    at=. ver adv @:              NB. Verbing @: (dyadic verb)
> >
> >    ( G=. [: v0 v1 v2 v3 v4 ]: ) NB. Boxed array of actual (undefined)
> verbs
> > for testing
> > ┌──┬──┬──┬──┬──┐
> > │v0│v1│v2│v3│v4│
> > └──┴──┴──┴──┴──┘
> >
> >           at&:"../        G     NB. Dyadic verbs associate to the
> right...
> > v0@:(v1@:(v2@:(v3@:v4)))
> >
> >          (at~&:"../) o |. G     NB. Conjunctions associate to the left
> > v0@:v1@:v2@:v3@:v4
> >
> >          (at~&:"../) o |. [:+]: NB. Wrong answer for a single boxed
> verb...
> > ┌─┐
> > │+│
> > └─┘
> >
> >    ".. o (at~&:"../) o |. [:+]: NB. Right answer
> > +
> >
> >
> >    match=. -:&:< conj           NB. Matching words? (conjunction)
> >
> >
> >    At=. ]: ".. o (at~&:"../) o |. f.adv
> >                                 NB. Pipelining verbs (adverb)
> >                                 NB. Using the extended form (a a)
> (adverb)
> >      assert ([:+At) match +
> >      assert ([: v0 v1 v2 v3 v4 At) match (v0@:v1@:v2@:v3@:v4)
> >
> >
> > Collected definitions(s) session...
> >
> >    conj=. _2 ?: 0               NB. Conjunction definition (adverb)
> >    match=. -:&:< conj           NB. Matching words? (conjunction)
> >
> >    At=. ]: "..@:((3?:((<'@:')))~&:("..)/)@:|. (_1?:0)
> >      NB. Pipelining verbs (adverb)
> >      assert ([:+At) match +
> >      assert ([: v0 v1 v2 v3 v4 At) match (v0@:v1@:v2@:v3@:v4)
> >
> >    NB. Example: Farey sequence: http://rosettacode.org/wiki/
> Farey_sequence#J
> > ...
> >
> >    Farey=. [:0&,/:~~.(#~ <:&1),%/~x:>:i.At
> >
> >    Farey
> > 0&,@:(/:~)@:~.@:(#~ <:&1)@:,@:(%/~)@:x:@:>:@:i.
> >    Farey 5
> > 0 1r5 1r4 1r3 2r5 1r2 3r5 2r3 3r4 4r5 1
> >
> >
> > Collected definition(s) script...
> >
> > conj=. _2 ?: 0               NB. Conjunction definition (adverb)
> > match=. -:&:< conj           NB. Matching words? (conjunction)
> >
> > At=. ]: "..@:((3?:((<'@:')))~&:("..)/)@:|. (_1?:0)
> >   NB. Pipelining verbs (adverb)
> >   assert ([:+At) match +
> >   assert ([: v0 v1 v2 v3 v4 At) match (v0@:v1@:v2@:v3@:v4)
> >
> > NB. Example: Farey sequence: http://rosettacode.org/wiki/
> Farey_sequence#J
> > ...
> >
> > Farey=. [:0&,/:~~.(#~ <:&1),%/~x:>:i.At
> >
> > Farey
> > Farey 5
> >
> >
> >
> >
>
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to