J Programming

Tacit Programming Extensions

The following patches apply to the J Software 701b source release.

0. Recursion scope (foreign adverb 103!:0)
1. Word from linear literal execution (foreign adverb 104!:1)
> recursion-scope-word-from-linear.patch

2. Conjunction-adverb train.
 u (c a) v => u c v a
> conj-adverb-train.patch

3. Adverb-verb train.
 (a v) y => (v y) a y 
  x (a v) y => x (x v y) a y
> adverb-verb-train.patch

4. Adverb-conjunction-adverb train.
 u (a c a) v => u a c (v a)
> adv-conj-adv-train.patch

5. Cloak
]: is a verb. X ]: Y returns the functional whose atomic representation is Y as a verb (3), adverb (1) or conjunction (2) depending on the return code X. ]: Y is equivalent to 3 ]: Y and it is also equivalent to (<(<,'4'),<(<(<,'4'),<;:'0:`'),<(<,'4'),<;:',^:') (0:`)(,^:)
> cloak.patch

6. Trigger and trap
]. (Trap) is an adverb. u ]. Is the same as u , except that if the verb [. (Trigger) is encountered, u returns immediately with the result being the monadic argument to the [. encountered.
> trigger-trap.patch

7. Knot
Is a conjunction; `. is similar to the J primitive tie (`) except that the atomic representation of noun arguments are taken only if their heads' interpretation as a train (`: 6) is invalid, thus making it valid.
> knot.patch

8. Trampoline
v O. causes any $: appearing in v to save its arguments and return control immediately back to O. which calls v on the saved arguments in a while loop. In other words, O. trampolines $: within v, preventing the function call stack from growing.
> trampoline.patch

See this J forum post for more details.

See also this cheatsheet.

Journal of J

J Functional Programming Extensions article in the October 2013 issue
Clean pdf copy of the article,
Script and Session.

Tacit Recursion Without The Self Reference Verb:

Script and Session.


License

The J Software release, Tacit Programming Extension patches and code and DLL are licensed under the GNU GPL v3
.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
http://www.gnu.org/licenses/gpl.html
A pre-built 32 bit Windows dll can be found here. UNTESTED - Use at your own risk.
Pre-built 32 and 64 bit Linux libs can be found here. UNTESTED - Use at your own risk.