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

Reply via email to