We haven't explicitly mentioned it, but to be clear, the point of (a a) is to 
save an adverb train to a name for application later.


I wasn't around when (c a) or (a c) was a thing, but if it was supposed to be 
equivalent to (u c v) a and u a (c v) then these can be implemented with double 
adverbs

at =: 1 : '@:u'
at2 =: 1 : 'u@:'

    - + /at
-@:(+/)

  - + (/at) NB. not error because double adverb is in last position.

-@:(+/)
    - + (/at2)
+/@:-


  - + at /
-@:+/
  - + at2 /  NB. cannot form (c a) equivalent train due to "bug"
+@:-/


----- Original Message -----
From: Thomas Costigliola <[email protected]>
To: [email protected]
Sent: Tuesday, March 15, 2016 4:28 PM
Subject: Re: [Jprogramming] Unbox request for requests


> I am not quite sure what you mean by "when an adverb is applied to an adverb"
Once (a0 a1) is parsed it becomes an adverb. It is a new adverb and it 
is its own self contained object. Once we apply X to it, there is no 
more parsing to be done, there is only the result of applying the adverb 
to its argument. When an adverb happens to be a train what does this 
mean? In the current implementation it means apply the first adverb in 
the train then apply the result to the second adverb in the train. No 
one is quite sure what is meant by "when an adverb is applied to an 
adverb", that is the basis of the discussion. So far the 2 ideas are: it 
generates the train of the two adverbs or; it results in a syntax error 
(current meaning). Previous versions of J did neither.

> In other words, here's five adverbs:
>
> a0=: 0 (1 : '/')
> a1=: \
> a2=: 1 : '/'
> a3=: a0 a1
> a4=: a2 a1
>
> The confusing thing, if I understand your thinking properly, is that
> you expect 0 a4 to be reparsed as a3. But, instead, 0 a4 gives you a
> syntax error.
Not quite. I am not expecting a re-parsing, and as far as I can see it 
is not mentioned in the dictionary. Unless I am mis-understanding the 
parsing rules, once the adverb train is parsed it becomes a unit and 
there is simply the application of that unit to its argument. The 
meaning of that unit is sparsely discussed in the dictionary and is what 
is in question here. If the "application of an adverb to an adverb" 
makes you uneasy a way out would be to change the parsing rules so that 
the application of adverb trains are part of parsing and not built in to 
action "3 Adverb". But currently there is no "Train parsing rule" so I 
don't see where, in the specification of the language, this is required 
to be a syntax error.

A side effect of the proposed change (from syntax error) is that:

X (a0 a1) <==> (X a0) a1

in more cases now. That seems good to me. What are the downsides?


> Meanwhile... error messages can help you find mistakes in your coding.
> So, there's that.
>
> Thanks,
>

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to