I'm coming in late and have only scanned previous posts, but my _intuitive_ 
take 
is that explicit programming of verbs is programming by example, "do with the 
arguments what you see me doing with x and y".

Tacit programming focuses on the operations to be performed: it gives a recipe 
of operations to carry out instead of an example to be followed.

    f =: 4 : '(x^2)+(2*x*y)+(y^2)'  NB. (x+y)^2
    2 f 3
25

    g =: [: +/ (*: @ [) , (2 * *) , (*: @ ])
    2 g 3
25

The f program says, "substitute the arguments and do x^2 + 2 x y + y^2" 
"Substitute the arguments" is the essence of explicit programming.

The g program says, "do the sum of the list made up of square of left, 2 times 
product, and square of right."

Verbs [ and ] may look like x and y in disguise, but [ and ] actions: find the 
left argument, find the right argument, while x and y are placeholders.

The tacit programmer learns to think of [: as "the" and @ as "of", and finds 
the 
tacit form understandable as a series of actions to be performed.

The explicit programmer is describing actions, too: the actions are plug and 
chug, something we all have been taught, so we understand and like explicit 
programs.

The tacit programmer is saying, here are the operations to perform, carry them 
out in the specified order and you will get the result.

Kip


Sherlock, Ric wrote:
>> From: Dan Bron
>>
>> No.  Let's go back to fundamentals:
>>
>>      A tacit expression can take arguments, but doesn't mention them.
>>
>> So  +`-  isn't tacit.  Which makes sense: we intuit that something
>> about nouns excludes them from being tacit.  Which is why my
>> second attempt at a definition, using the parse table, almost works.
>>
>> The special thing about nouns, that prevents them from being tacit, is
>> that they can't take arguments.  Nouns are the lowest level
>> of the part-of-speech hierarchy.  Nouns can take no arguments, verbs
>> can take nouns as arguments, operators can take nouns or
>> verbs as arguments, and nothing can take operators as arguments.
>>
> Yes I was also thinking of nouns as being important in the definition. In 
> addition to the above, something along the lines of:
>     A tacit expression does not produce a noun if assigned to a name
> 
> So while the expression + is tacit, 3+5 isn't but 3+5: is.
> 
> This sentence contains tacit expressions defining the functions sum, mean and 
> integers. But the sentence is not a tacit expression because its result is a 
> noun.
>    +/ (+/ % #)  i. 4 5
> 
> Does the definition also need to include something about being able to 
> preserve its features if it is enclosed in parentheses or assigned to a name? 
> In the sentence above I could assign everything before the 4 to a name. That 
> name could take arguments, doesn't mention them and isn't a noun, but it 
> wouldn't preserve its features.
> The following tacit expression would. 
>    ([: +/ (+/ % #))@i.
> 
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to