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.