Explicit or tacit? Which technique should be used to define a verb?

Explicit definitions tend to have an advantage over tacit for adverbs and conjunctions.

Explicit is usually better for verbs which must deal with more than two independent nouns.

As a general rule, when you're dealing with more than two nouns in a tacit definition you must go to extra work to pack them into the two nouns supported as dyad arguments. Sometimes this works rather well, but sometimes explicit is more straightforward (and in those cases it tends to perform better than tacit).


0. Tacit is shorter than explicit. This is especially pronounced in short expressions. For example, the monad +/\ is preferrable to the equivalent 3 : '+/y'\

1. Tacit is more amenable to formal manipulations than explicit. For example, the interpreter "recognizes" +/\ and implements it with special code. To do the same for 3 : '+/y'\ would be more difficult. Likewise for many of the entries in http://www.jsoftware.com/help/dictionary/special.htm

Formal manipulations also come into play in things like f^:_1 and f&.g . http://www.jsoftware.com/jwiki/Essays/Under

2. Explicit is clearer if more than two names are involved. For example, a tacit version of cnv in http://www.jsoftware.com/jwiki/Essays/Collatz_Conjecture is possible but it would not be as readable.

3. Tacit encourages building up a more complex function from components. The same can be done with explicit but it tends not to be done; instead, the components end up being temporary local names that are not as readily accessible. For example: http://www.jsoftware.com/jwiki/Essays/Matrix_Inverse


Dan Bron explains why he prefers tacit programming here.


Source Material

Tacit vs. Explicit (J for the APL Programmer)

Tacit definition (J Primer)

Explicit-to-tacit (J Primer)

Explicit Definition (J Dictionary)

Tacit Equivalents (J Dictionary)

Definition of : (Explicit) (J Dictionary Vocabulary)

Definition of : (Monad-Dyad) (J Dictionary Vocabulary)

Tacit Programming (J for C Programmers)

Scripts and Explicit Functions (Learning J)

Defining Functions: Verbs (Chapters 8 through 15) (Learning J)

Explicit Definitions (J Phrases)

TracyHarms/notebook/tacitvsexplicit (last edited 2008-12-08 10:45:34 by )