Thanks very much.  

In terms of usefulness, 
ifC=: 1 : 'if. flag1_z_ do. u y else. y end.'
pD =: smoutput ifC
test=: +: ifC

   test controlA a=. 1 2 3
2 4 6
  test  a=. 1 2 3
1 2 3

The pD verb can produce verbose output for debugging only when asked.

2 points to a single line:
1.  eliminates 11 lines of irritating clutter that I don't want to see.
2.  If I or someone else copies just the definition without the initialization 
variable into a new project, in someone's lifetime, I/they will get a domain 
error, and will either hate the function or their lives because of it.  I might 
make this error more likely to occur by inadvertantly inserting code between 
the function and the initialization.

An improvement I'm not sure is possible would be to modify controlA and/or ifC 
to not access y, ie. be tacit.
 
----- Original Message -----
From: Raul Miller <[email protected]>
To: General forum <[email protected]>
Cc: 
Sent: Friday, September 13, 2013 1:25:06 PM
Subject: Re: [Jgeneral] Bug in adverb define

It's not at all clear to me why doing this kind of thing on "one line"
is useful.

That said, this example of yours:

   flag1_z_ =: 0  [ controlA_z_ =: 1 : ('flag1_z_ =: 1';'o=. u
y';'flag1_z_ =: 0';'o')

has this grammar:

   name =: noun verb name =: noun conjunction noun

Which, simplifies to

   name =: noun verb adverb

In other words, you are executing controlA with u defined as [ which
then simplifies to

   name =: noun verb

and that's just bad grammar.  A simple transformation which would make
it grammatically correct would be:

   name =: verb noun

and... projecting this back into your original sentence, it would become

   flag1_z_ =: ([ controlA_z_ =: 1 : ('flag1_z_ =: 1';'o=. u
y';'flag1_z_ =: 0';'o')) 0

However, since I have no idea what you are trying to accomplish, I
have no idea if this is relevant to your efforts.

FYI,

-- 
Raul

On Fri, Sep 13, 2013 at 1:09 PM, Pascal Jasmin <[email protected]> wrote:
> thank you.  I'm still not able to combine into one line (which IIUC can be 
> done with verb defines)
> flag1_z_ =: 0  [ controlA_z_ =: 1 : ('flag1_z_ =: 1';'o=. u y';'flag1_z_ =: 
> 0';'o')
>
>
> btw, The dyad version define is:
> (flag1_z_ =: 0) [ controlA_z_ =: 1 : ('flag1_z_ =: 1';'o=. u y';'flag1_z_ =: 
> 0';'o';':';'flag1_z_ =: 1';'o=. x u y';'flag1_z_ =: 0';'o')
>
>
>
>
> ----- Original Message -----
> From: Don Guinn <[email protected]>
> To: General forum <[email protected]>
> Cc:
> Sent: Friday, September 13, 2013 12:18:34 PM
> Subject: Re: [Jgeneral] Bug in adverb define
>
> Need to add parens.
>
> controlA_z_ =: 1 : ('flag1_z_ =: 1';'o=. u y';'flag1_z_ =: 0';'o')
>
>
> On Fri, Sep 13, 2013 at 9:18 AM, Pascal Jasmin <[email protected]>wrote:
>
>> The following in a script should work according to
>> http://www.jsoftware.com/help/dictionary/dicth.htm
>> flag1_z_ =: 0
>> controlA_z_ =: 1 : 'flag1_z_ =: 1';'o=. u y';'flag1_z_ =: 0';'o'
>>
>> It results in a syntax error script in J7.  The syntax error can be
>> eliminated by changing 1 : to 3 :
>>
>> The adverb (and definition) works as a 4 line definition.  Its purpose is
>> to send control flags to a verb which changes its behaviour if called with
>> the adverb.  The importance of getting it on one line is that supporting
>> dyads would take a multiline definition 10 lines with the ending ), and its
>> the type of utility function that can be cloned to control2A control3A and
>> so, single line definitions are more reusable.
>>
>> The multiline version is:
>> controlA_z_ =: 1 : 0
>> flag1_z_ =: 1
>> o=. u y
>> flag1_z_ =: 0
>> o
>> )
>>
>> Ideally I'd like to be able to write a definition line such as:
>>
>> flag1_z_ =: 0 [ controlA_z_ =: 1 : 'flag1_z_ =: 1';'o=. u y';'flag1_z_ =:
>> 0';'o'
>>
>> (which does load if '1 :' changed to '3 :')
>> ----------------------------------------------------------------------
>> 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
----------------------------------------------------------------------
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