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