>>  <<  Ndx  Usr  Pri  Phr  Dic  Rel  Voc  !:  wd  Help  Phrases

Explicit Definitions

Explicit definition is convenient for anyone more familiar with conventional programming, particularly that using if then else forms. It is also convenient for anyone engaged in extending their mastery of tacit programming: the automatic translation of a one-line explicit definition to tacit form can provide instruction in the reading and writing of tacit expressions. For example:

   log=: 3 : '10 ^. y.'
   log 1 10 20 40 100
0 1 1.30103 1.60206 2

   log			Display of the definition of log
3 : '10 ^. y.'

   log=: 13 : '10 ^. y.'
   log 1 10 20 40 100
0 1 1.30103 1.60206 2
   log			Display of the (tacit) definition of log
10"_ ^. ]
a0=: def=: : 0Adverb for entering explicit definitions

The phrases 1 : 0 and 2 : 0 and 3 : 0 may be used for entering explicit definitions of adverbs, conjunctions, and functions, without entering enclosing quotes. The adverb def defined above makes their use somewhat more convenient. For example:

   LOG=: 3 def
10 ^. y.
:
x. ^. y.
)

 
   LOG 10
1
   2 LOG 32
5

   rat=: 2 def
x.&p. % y.&p.
)

   1 4 6 4 1 rat 1 2 1
1 4 6 4 1&p. % 1 2 1&p.

   (1 4 6 4 1 rat 1 2 1) i. 6
1 4 9 16 25 36

It is important to recognize that explicit definitions are ordinary J statements (using the conjunction :) , and can be used with other expressions. For example:

   mat=: [;._2 (0 : 0)	Define matrix
one
two
three
)

   boxed=: <;._2 (0 : 0)	Define boxed list
one
two
three
)

   fn=: 3 : 0"1	Assign rank to an explicitly defined function
< +/ y.
)

   x=: 3
   3 : 0 x	Execute unnamed explicit definition
if. 2|y. do. 'odd' else. 'even' end.
)
odd

 
   mat
one  
two  
three

   $mat
3 5

   boxed
+-------------+
�one�two�three�
+-------------+

   fn i. 3 4
+-------+
�6�22�38�
+-------+

>>  <<  Ndx  Usr  Pri  Phr  Dic  Rel  Voc  !:  wd  Help  Phrases