The trace output in
http://jsoftware.com/pipermail/programming/2016-February/044317.html
shows order of operations.

Or, a redundantly parenthesized version of that example would look like this:

(". ((0 : 0) -. LF))
  1

  2
  3
)

That said, note that this is not "fully parenthesized". I guess a
"fully parenthesized" version would look more like this:

((".) (((0)( :) (0)) (-.) (LF)))
  1

  2
  3
)

Note also that any parenthesized element can be stored in a name and
the name can be replaced into the sentence with no change in result.
(But the script block has to be associated with the conjunction
getting both of its arguments.)

For example:

script=: 0 :0
  1

  2
  3
)

cleaned=: script -. LF
evaluate=: ". cleaned

   evaluated

There are other ways of looking at this also, if you want further exposition.

Thanks,

-- 
Raul



On Thu, Feb 11, 2016 at 8:49 PM, Matthew Baulch <[email protected]> wrote:
> If I understand correctly, the result of 0 : 0 may be referenced as any
> part of the expression on the same line; whether before, or indeed AFTER
> the 0 : 0. Conceptually, the lines following 0 : 0 (until the terminating
> ')') can be regarded as embedded in the 0 : 0 within the sentence. This is
> a curious design decision, but I think I understand how it works. (As noted
> to Henry, I'm not convinced it's adequately documented)
>
> Regarding the 'heavy-handed' comment, I was just pointing out that ". is a
> very powerful, arguably the most powerful, verb. We are using it for a
> minor syntactic effect: nothing else.
>
> Analogously, ^: can replace +, which can replace >: (all dyadic).
> Similarly, @. can replace ^:, which can replace -. (dyadic here too). For
> code with maximum clarity, the 'least powerful' or 'most specific'
> verb/conjunction/... suitable for a task is most often preferred as it
> usually leads to the clearest code.
> On 12 Feb 2016 4:38 am, "Raul Miller" <[email protected]> wrote:
>
>> [posting my response in-line for context]
>>
>> On Thu, Feb 11, 2016 at 12:55 AM, Matthew Baulch <[email protected]>
>> wrote:
>> > Thanks everyone. This (let's say) creative use of 0 : 0 makes sense to me
>> > now. I wonder if it's an accidental consequence of the implementation
>> that
>> > allows an expression following the 0, or whether it's a deliberate design
>> > decision. Either way, it makes sense to have it documented. Can't see it
>> in
>> > NuVoc or the Dictionary. Of course, I may have overlooked it.
>>
>> http://www.jsoftware.com/help/dictionary/d310n.htm says
>>         0 : n   noun
>>
>> So the result of 0 : 0 is a noun. (Specifically, it's a list of
>> characters.) So you should expect that anything you can do with a noun
>> you can do with a noun produced by 0 : 0
>>
>> Or, that's how I read it...
>>
>> Note also that you can have multiple explicit definitions on the same
>> line. They pull their scripts from the input stream in the order that
>> they are parsed (mostly that's right-to-left). This can be fun to play
>> with, sometimes, but I guess it's usually better to give scripts
>> names.
>>
>> > Honestly, to obtain something simple like multi-line noun definitions, ".
>> > does seem like quite a heavy-handed tool. It does work however, so I
>> > probably shouldn't grumble.
>>
>> I'm not sure why you say that.
>>
>> One possibility is that ". cannot produce adverb or conjunction
>> results. (If that is the issue, you can resolve it by moving the
>> assignment statement inside the explicit noun.)
>>
>> Another possibility is that you would prefer a more heavy handed
>> approach (for example, moving an "ignore end of line" implementation
>> inside the interpreter and then changing other aspects of the
>> interpreter to taste.)
>>
>> But it's even more likely that I'm simply not following your thought
>> process. Would you care to elucidate?
>>
>> Thanks,
>>
>> --
>> Raul
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> 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