I come somewhat late to the market and the best wares have
gone. I would ask you to consider a situation in which the curly brackets
"{" and "}" were still available. It would really help me for the moment -
and I will deal later with the fact that they are not available.
I will work with the formula for standard deviation, because it is
simple and a good illustration for my purposes. In explicit form -
containing a tacit expression - it can be:
%: (% <: # y) * +/ *: (- +/ % #) y
The tacit verb combination (- +/ % #) is undoubtedly the best
way of defining the deviations from the mean. However, the
mathematical formula also includes the expression 1/N-1, where N is the
number in the sample. This is concisely described by the right to left
rule in explicit form with three verbs: %<:#
I found this definition of tacit definition in the primer: "In a
tacit definition the arguments are not named and do not appear explicitly in
the definition. The arguments are referred to implicitly by the syntactic
requirements of the definition." What it doesn't say, but assumes, is that
tacit definition also implies the fork/hook grammar rather than the
right-to-left grammar. This would be the natural outcome when,
as Tracy noted, tacit J was developed first.
I was totally wrong in my initial viewpoint. I thought the
only choice in tacit form was between totally fork/hook grammar
and totally right to left grammar. It obviously isn't.
Suppose that there existed a parallel tacit form in which the grammar
was right to left. We could enclose any expression in this tacit form in
curly brackets as follows: {%<:#}. Now let's put the whole formula
together using both regular and curly parentheses - I am assuming that
the grammar at any point depends upon the innermost parentheses
surrounding that point:
{%: {% <: #} * +/ *: (- +/ % #) } y
This meets the definition of tacit definition - only verbs exist
between the two outside curly parentheses. It also meets the definition
that Tracy provided as long as I take her use of the word "parentheses" to
include curly as well as curved parentheses:
"A tacit expression is one in which no parameters are explicit. When
parentheses are needed to isolate an expression from something that would
otherwise be parsed as a parameter, they therefore also delimit where an
argument may be found."
To me this integrates the two grammars into a single J. It fits
intuitively. It enables features of J to be introduced separately and in
any order - so helping the learning process. For any verb expression
it uses whichever grammar suits best.
Tracy said:
"In my view, J syntax is so simple that it can't be bent without breaking."
I don't think this changes the grammar. The right to left
grammar used inside curly brackets already exists. The fork/hook
grammar is embedded in right to left grammar exactly as it was before.
All it does is allow the parameters to be removed from an expression in
right to left grammar. I can't see how that breaks anything.
Now, of course, I come to the problematic fact that the curved brackets
are not available, so the alternative will be ugly. Perhaps I could put
something inside the rightmost parenthesis to mark the type of
parenthesis. For example, I don't think "&" normally exists without
something to its right - so perhaps I could use that:
(%: (% <: #&) * +/ *: (- +/ % #) &) y
Don
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm