That is right; unfortunately x, y, u, v, m, and n are peculiar characters which 
can explicitly strike back even if one tries to ignore them.  Using your very 
own anonymous evocation tool ( 
http://www.jsoftware.com/pipermail/programming/2007-November/008816.html ) as 
an example:

   ae =: ("_) (`(<1;~,'0')) (((<,':') <@:, (<1;~,'0') <@:, (,'0') <@:(;<) 
,&>@:,@:(<^:(0=L.)))`) (`:6) ((<1;~,'0')`) (`:6)
   
   x=. @[
   y=. @]
   
   '<y'ae NB. OK...
<@]

   '<x'ae NB. Here it comes...
+-+
|1|
+-+





________________________________
From: Dan Bron <[email protected]>
To: General forum <[email protected]>
Sent: Tuesday, August 18, 2009 5:07:27 PM
Subject: Re: [Jgeneral] Looks like a bug in ".

David Mitchell wrote:
>  I found these pages helpful as well as the excellent references above:
>  http://www.jsoftware.com/help/jforc/parsing_and_execution_ii.htm

Wow, I really need to review J for C Programmers.  It's a gold mine.  Look:

>  Avoid using the parameter names x, y, u, v, m, and n 
>  ... when an explicit definition is running, those names 
>  are always evaluated before they are put onto the stack 
>  (in other words, they are passed by value rather than 
>  by name, even if they are verbs).  Therefore, they 
>  produce value error if they are undefined when used.

and I was citing some old J Forum post!

-Dan
----------------------------------------------------------------------
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