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

Reply via email to