Thank you, thank you Ric,
You will note from below that you have solved the major
problem I had in the implementation of revised tacit J.
Instead of worrying about
trying to convert from a revised tacit to a tacit J, all that
has to be done is to translate the revised tacit J back to
explicit J and there already exists a routine to turn it into
regular tacit J. I now know that it is going to be
straightforward to superimpose revised tacit J on top
of regular tacit J.
__________________________________________________
I will, however, go through my responses in sequence.
You stated:
> Could this perhaps be influenced by your many years of prior exposure to
> APL?
I think it is more likely to be influenced by exposure to Mathematics.
______________________________________________________
You stated:
> Skip Cave's suggestion of taking some of the J phrases and expressing them
> in your notation may be useful. You have done this for a couple of In
> fact that is much the same approach that was taken by Hui et al. (1991) in
> their Quote Quad paper, Tacit Definition.
> <http://portal.acm.org/citation.cfm?id=114055.114077> They took 10 APL
> phrases from the FinnAPL Idioms and developed them as tacit J.
Thanks for the suggestion. I will
_______________________________________________________
You stated:
> I agree with his suggestion that the onus is on you to prove that your
> suggestion is better but here is one example anyway:
> Verb to pick x values at random from set y with replacement.
> 5 randNums 1 2 3 4 8 9 11 4 2 66
> 2 1 1 9 66
> (? x $ #y) { y NB. Explicit J
> (?...@$ #) { ] NB. Tacit J
> (? ([) $ #) { y NB. Syntax for S - derived from explicit J using
> rules below
I agree.
________________________________________________________
You state:
> Firstly the above the rules will need some adjustment because they don't
> currently create tacit anything.
From the Primer, I obtained the following definition of tacit: "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."
The following is the example that has been used frequently in this
discussion:
S Compound Verb: (%:(+/*:] -(+/)%#)%<:#)
There are no named arguments. The syntactic requirements of
this revised tacit J that allow them to be referred to implicitly
are:
a) Every right parentheses is assumed to have a right argument
to the left of it, except where there is a "[" there already.
b) Every "]" is assumed to have a right argument to its right.
c) Every "[" is assumed to have a left argument to its right.
You will note a couple of changes I have made as a result of the
tough testing that everyone has given S or the revised tacit
programming.
1) I thought I could get away with leaving out the parentheses
that surround a tacit expression within an explicit expression.
I can't.
2) I have realised that I can get away without parentheses
around "[" and "]" as tacit J does by an addition to the
to the way a dyad is found: "Every verb is monadic except
when It has a noun, a right parenthesis, "]" or "[" to its left.
____________________________________________________
You state:
> What about a sentence like this:
> (y * (x - y)) % y NB. Explicit J
I think you have added extra parentheses that are not needed
in a right to left rule. It should be:
(y * x - y) % y NB. Explicit J
I am going to apply the changed rule from above. The
S expression is now:
(] * [ - ) % y NB. Translate to tacit S according to
new rules.
(]y * [x - y) % y NB. Translate back to Explicit J
according to new rules step 1
(y * x - y) % y NB. Translate back to Explicit J
step 2
I think it is possible to identify when an identity verb is doing
nothing. Regular tacit J has exactly the same problem.
I do agree that it demonstrates that adding unnecessary
extra parentheses is a problem. There are two solutions
to this.
1) Don't allow two right parentheses without something
between them.
2) Follow regular tacit J and place a "]" to the left of
a right parenthesis where the right argument is needed.
However, thank you, thank you, thank you. You have solved
my major problem so simply, as noted above.
__________________________________________________
You state:
> The Bibliography of APL and J
> <http://www.jsoftware.com/jwiki/Essays/Bibliography> has many very
> interesting papers that may be of interest to you. A lot deal with the
> development of APL & J. Many use APL/J to explore different areas of
> mathematics.
>
> Iverson, (1996) Computers and Mathematical Notation,
> <http://www.jsoftware.com/papers/camn.htm> discusses why using
> Mathematical notation as "the standard" may not be the best idea
Thank you for these references.
Thanks,
Don
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm