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