Hi Roger,
You wrote:
- Regarding @: , @, etc.: In conventional math
notation, the composition of monads is written
f0 jot f1 jot f2 jot f3 ...,
and you can make a case for juxtaposition to denote
composition: (f0 f1 f2 f3 ... ) In J (and APL),
when dyads are involved, there are several possibilities
for composition, and different symbols were invented
for them:
x f...@g y <-> f (x g y)
x f&g y <-> (g x) f (g y)
x f&.g y <-> g^:_1 (g x) f (g y)
___________________________________________
Bear with me, I eventually get to why chat members are right
in telling me that what I have is not tacit
Two chat members have asked recently what I want.
As this discussion progresses, I am getting a clearer picture of that.
I begin with the Mathematical formula for standard deviation. I will
express it in ASCII and J as best I can, using "E" for sigma and a couple
of J verbs.
sd = %: (1/ N - 1) * E (y - Ey/N)^2
I can substitute <:#y for N - 1, +/ for E and *: at the front for ^2
at the back:
%: (% <:#y) * +/ *: y -(+/y)%#y
%: (1/ N - 1) * E (y - E y / N)^2
I could convert this to a implicit form by simply replacing y
with ] - except at the extreme right. I am repeating the previous
steps below to make the comparison easier to see:
sd =: %: (% <:#]) * +/ *: ] -(+/])% #
%: (% <:#y) * +/ *: y -(+/y)% #y
%: (1/ N - 1) * E (y - E y / N)^2
The steps in moving the student to accept that the third formula is
the equivalent of the first are fairly easy. I now have something to
experiment with and show students how variation of the data
causes different kinds of results.
Yes, I can do this by using:
sd=: 4 : '%: (%<:#y) * +/ *: y -(+/y)%#y'
but the student is going to ask why we put it in quotes when the
rest of Mathematics isn't in quotes and doesn't write 4: in the front.
Seemingly little barriers can actually be big barriers.
A couple of days ago I realised that in trying to find something easier
for the academic community, I was making things more complex than they
needed to be. I could simply take any explicit J expression, replace all
"x"s with "[" and all "y"s with "]" and I had something that fulfilled the
definition of tacit J: "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."
If you look at the fork and the hook, which are the first
components of tacit J, things fit in well. Instead of:
(+/%#) I can write ((+/])%#) and be following the right to left rule.
For the hook:
(-%:) I can write (] - %:) and be following the right to left rule.
If an expression is short, the tacit J definition is shorter than
following the right to left rule. As the expression gets longer the
right to left definition is shorter. In addition, the right to left
definition is closer to the Mathematical Notation.
So give me a right to left explicit J expression and I can
quickly find you an implicit J definition that is shorter that
tacit J and closer to Mathematics.
For the hook and fork, the left to right rule gives you a direct
interrelationship between verbs, just like tacit J. But the dividing
line that forces me to look at your side of the elephant is the fact
that other verb interrelationships can't be defined except with
tacit J. For example, take the expression:
x f...@g y <-> f (x g y)
that you have given above. In explicit J this is still: f (x g y)
and could be expressed in a right to left implicit form as: f ([ g ])
This may contain nothing but verbs, but it doesn't link f directly
to g as your tacit J expression does. So I am suggesting that we
need to be careful about the definition of tacit J. It needs to be
something like:
"In a tacit definition:
1) the arguments are not named,
2) the arguments do not appear explicitly in the definition,
3) the arguments are referred to implicitly by the syntactic
requirements of the definition, and
4) verbs are directly linked to each other using conjunctions."
I don't know whether that is exactly right, but it has the
sense of what is needed. That is the reason that members
of this chat forum keep telling me that what I have is not tacit.
I now agree with them.
However, this leaves an opportunity for another form,
which does not necessarily link verbs directly, but in which:
1) the arguments are not named,
2) the arguments do not appear explicitly in the definition,
3) the arguments are referred to implicitly by the syntactic
requirements of the definition,
This would not serve the acdemic needs for which your
J programmers require it, but it would make it much easier
for neophytes, teachers and students to use a service that
was of a practical and less abstract nature.
Don
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm