For those interested in trying out the extensions there is now a 32 bit windows j.dll available.
PLEASE NOTE that the original links have changed. The patches and binary can now be found at http://www.2bestsystems.com/foundation/j These are provided under the GPLv3, AS IS with NO WARRANTY. Use at your OWN RISK. Enjoy! On Fri, Feb 22, 2013 at 3:18 PM, Jose Mario Quintana < [email protected]> wrote: > > Something is cooking, stay tuned... > > This is it! First, I would like to thank Eric Iverson for his easy > approach to deal with the necessary legal hurdles and to Roger Hui for his > professional assistance and guidance (however, we are entirely to blame for > any misconceptions in the design of these extensions). We, at my company, > have been committed for more than a decade to implementing production > systems in pure fixed tacit J code (that is, with no pronouns, pro-verbs, > pro-adverbs, pro-conjunctions, copulas (assignments) or explicit > definitions). The code is generated tacitly and to facilitate this process > we have, over these years, added proprietary extensions to the language. > > We are releasing some of these extensions. The subject of this message > was "J tacit extensions" but I changed my mind hoping to attract the > attention of contributors interested in functional programming and > function-level programming. Personally, I think it is unfortunate that > Boyko decided not to participate anymore in the forums and I hope he would > reconsider his decision. For me tacit concepts came first and functional > programming concepts followed as a consequence later on but I am, somewhat > self-confessed, functionally illiterate ( see, > http://www.jsoftware.com/pipermail/programming/2010-November/021108.html ) > and I do not mind being educated, on the contrary, just be gentle [wink]. > Seriously, we are interested in how those concepts could enhance, and be > implemented in the context (and mostly in the context) of, J. We welcome > comments and feedback on these extensions and further suggestions for > future extensions. > > The four extensions released are: > > 0. Scope for recursion (foreign adverb 103!:0 ) > The motivation, quoting from "tacit verbs to calculate the number of angels > dancing on the head of a pin" ( > http://www.jsoftware.com/pipermail/general/2005-February/020757.html ), > is: > "On the one hand, recursion is awesomely powerful... On the other hand, > while $: allows for recursive fixed definitions (as the above-mentioned > definition), these definitions are not themselves fixable... I have been > dreaming for a long time of a magic > self-reference [($:)] scope adverb." > > Example use, > > o=. @: > x=. @[ > y=. @] > > rs=. 103!:0 > > fact=. 1:`(* $: o <:)@.(1 < ]) > > comb=. fact f. rs y % (fact f. rs o -)~ * fact f. rs x > 3 (! -: comb) 7 > 1 > comb > 1:`(* $:@:<:)@.(1 < ]) (103!:0)@] % 1:`(* $:@:<:)@.(1 < ]) (103!:0)@:-~ * > 1:`(* $:@:<:)@.(1 < ]) (103!:0)@[ > > comb=. (fact y % (fact o -)~ * fact x)f. > 3 (! -: comb) 7 > 1 > comb > 1:`(* $:@:<:)@.(1 < ]) (103!:0)@] % 1:`(* $:@:<:)@.(1 < ]) (103!:0)@:-~ * > 1:`(* $:@:<:)@.(1 < ]) (103!:0)@[ > > 1. Word from linear (i.e., character list a.k.a. string)) execution > (foreign adverb 104!:1) > This adverb provides functionality related to do (“.), evoke (~), to Dan’s > (ae) adverb and verb (dont). > > Example use, > > wl=. 104!:1 > > '0+1'wl > 1 > '!@#'wl > !@# > '"2'wl > "2 > '@.'wl > @. > '(v=. ^&*)'wl > ^&* > v > ^&* > 'v'wl > ^&* > '=.'wl > |syntax error: wl > | =. > > 2. (c a) train > Restoring the decommissioned train, > u (c a) v ↔ u c v a > > This train is worthy on its own right but my main motivation to restore it > was to allow the construction of tacit conjunctions from corresponding > tacit adverbs. Although adverbs are as powerful as conjunctions, preaching > to the converted, notation is crucial and conjunctions simplify it > (otherwise, imagine the notation for v0 @: v1 @: v2 @: v3 @: v4). > > Example use,(see, > http://www.jsoftware.com/jwiki/Community/Conference2012/Talks and > http://www.2bestsystems.com/j/J_Conference_2012.rtf ) > > (u`v) ((`((<'^:'),<(,'0');_)) (@.0 2 1 2 3)) > u^:v^:_ > > w=. `((`((<'^:'),<(,'0');_)) (@.0 2 1 2 3)) > u w v > u^:v^:_ > > 3. (a v) > Experimental train suggested by Viktor Cerovski in "Atop u at v with v of > negative monadic rank" > ( http://www.jsoftware.com/pipermail/programming/2010-November/021108.html > ), > > (a v) y ↔ ( v y) a y > x (a v) y ↔ x (x v y) a y > > Example use (see, > http://www.jsoftware.com/pipermail/general/2001-January/005192.html ), > > (u")v NB. x ((u")v) y ↔ x u"(x v y) y > (u") v > > 1 ((<@]")[) i.2 3 4 > ┌───────────┬───────────┬───────────┐ > │0 1 2 3 │4 5 6 7 │8 9 10 11 │ > ├───────────┼───────────┼───────────┤ > │12 13 14 15│16 17 18 19│20 21 22 23│ > └───────────┴───────────┴───────────┘ > 2 ((<@]")[) i.2 3 4 > ┌─────────┬───────────┐ > │0 1 2 3│12 13 14 15│ > │4 5 6 7│16 17 18 19│ > │8 9 10 11│20 21 22 23│ > └─────────┴───────────┘ > > (u L:)v NB. x ((u L:)v) y ↔ x u L:(x v y) y > (u L:) v > > The patches for the extensions can be found as follows: > > 0, 1 at > > http://www.2bestsystems.com/foundation/j/recursive-scope-word-from-linear.patch > 2 at http://www.2bestsystems.com/foundation/j/conj-adverb-train.patch > 3 at http://www.2bestsystems.com/foundation/j/adverb-verb-train.patch > > Thought experiments are useful but "the description is not the described," > by providing the means to build a concrete extended J, members of the forum > could "trust but verify." We hope that Dan, Raul, Viktor, Henry, Marshall > and many more forum members interested in tacit and functional programming > (you know who you are) could try and test them. These extensions are not > empowered; a new or resurrected train is a train but the adverb (wl) could > be empowered as a verb (capable of retuning verbs adverbs and conjunctions) > and as such supersede Dan’s (dont). > > The source code patches are licensed, as they are, under GNU GPL, accepting > no responsibility whatsoever, etc. However, we encourage your feedback; > please direct any comments and suggestions regarding the code of the > patches to Thomas and he will consider them (time permitting). > > Pepe > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
