We have developed a variety of proprietary tools; perhaps the most important is
an old adverb (tv) that allow us to decompose a generic tacit verb v as vn@:
... @:v0@:u and write it as:
v=. [tv
<u code>
<v0 code>
...
<vncode>
)
(with optional commentary in the usual form) and a companion adverb that can
track the execution by "attaching" an arbitrary adverb to the verb associated
to each line. This allows to display the code of each verb as is being
executed, display the inputs or outputs, capture the inputs or outputs for
debugging, etc, or any combination of the above.
For example one of the Ackermann verbs that I mentioned in another thread was
originally coded as:
NextXAck=. '-&3@:(] ('c , ] , ')&.(-&3)@:]^:(>:@:[) 4:)'c
set'X G'
XAck=. [tv
'G'ln o <
G h( (bg >:`(2&+&.(3&+))`(2&*&.(3&+))`(2&^&.(3&+)))c )
(X f {:: G f) :: (X f NextXAck y t ([ - 3:) (_1: {:: G f))
)
Ackermann=. ( XAck x a ] )f.
Later, it was decomposed backwards into component verbs and resolved before
being posted to the forum (I am afraid that other times I have not been so
kind).
________________________________
From: Henry Rich <[email protected]>
To: Programming forum <[email protected]>
Sent: Thursday, May 14, 2009 9:59:03 PM
Subject: Re: [Jprogramming] What to say about J to APLers
As Tracy suggests, tacit programming is not an either/or thing.
...
Jose Quintana has made a living writing big tacit systems, but it's not
for me. Maybe he could tell us what tools he uses to make it practical.
...
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm