Make that "but [ and ] are actions"
Kip Murray wrote: > 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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
