Once I saw that you'd used the dyadic form of (gerund}) precisely in order to 
obtain its three-part structure ((x v0 y) (x v1 y)} (x v2 y)) I saw that I 
could take advantage of this to factor out shape-of.  Thus instead of 

guard=: ]`([:<"1 [EMAIL PROTECTED] >:@#: [EMAIL PROTECTED]@])`(0 $~ 2 + [EMAIL 
PROTECTED])}~

we can have 

guard=: [`([:<"1 ] >:@#: [EMAIL PROTECTED])`(0 $~ 2 + ])} $

for this tacit version of guard.  As you noted this is presumably not so 
efficient as the other solutions posted.

By the way, what I'd expected to find as I went into this was a way to specify 
corner-plus-extent to }, along the lines of (;.&0).  I'm still somewhat 
surprised that it's not available.

--
Tracy B. Harms
 
     A good programming language is a conceptual universe
     for thinking about programming.
                                        Alan Perlis


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

Reply via email to