Justin Paston-Cooper wrote:
>  Is there an abbreviation or better way of 
>  doing <<($ $ v@,)>>

If you just want an adverb for it, then 

           UnderRavel =: (@,) ($`) ($`) (`:6)

           v UnderRavel
        $ $ v@,
           
or   UnderRavel =: adverb def '$ $ u@,'  might be more readable if you're
not comfortable with tacit adverbs.

Sad, in the good old days [J4] we could have written UnderRavel =: @, $~ $ .
This was my first tacit adverb (early 2000s), and I remember being very
proud when I "invented" it.  Until a moment later, when I remembered Kirk
Iverson had showed it to me before (or at least the key idea of commuting
the middle tine and putting the @ on the left, so it could accept an
argument instead of being immediately bound to the $).  None the less, I
kept it around in my utilities script for a while.

>  where v is a monad

in  v...@u  v will be invoked as a monad, whether it likes it or not (so v is a
monad by definition).  But yes, we are discussing the whole verb  $ $ v@,
only as a monad.

Roger wrote:
>  I'd like to see what such a v is.

I'd like to know the use case too; this idiom sees interesting applications
(e.g. [1-5]).  It also has a brother in  UnderNub =: ( @:(#~ ] = i.@:#) )
({`) (]`) (`:6) (` (i.~) ) (`:6)  or  1 : '(] { u@:(#~ ] = i.@:#)) i.~'
which helps with expensive (but functional)  u  .

-Dan

[1]  a - mark across words > 1 letter in a crossword puzzle

     a =: $ $ (0: , }: (#^:_1) 2: < |@(2: -/;._3 (# i...@#)))@,

     http://www.jsoftware.com/pipermail/general/2004-March/016671.html 

[2]  glqextentwm - query the size (extent) of a text matrix you want to
display 
     (i.e. turn a matrix into a vector for a 3rd party library to consume, 
     then convert it back):

     qextentwm=: $ $ qextentwv@,

 
http://www.jsoftware.com/trac/base/browser/branches/cdb/grid/base/util/util.
ijs#L72
     http://www.jsoftware.com/pipermail/beta/2005-December/000215.html


[3]  zz2 - zig-zag matrix:

     zz2 =:  ($ $ [: /:@:; <@:|.`</.)@:i.@:,~

 
http://www.jsoftware.com/pipermail/programming/2006-November/004156.html 

[4]  across - apply gerund left to array on right.      

     across=: adverb def '1 (  ({.(}...@$ $ ,)`[)  A   u  );.1 ]'

 
http://www.jsoftware.com/pipermail/programming/2006-December/004287.html 

[5]   The Forum search utility really has some nice features;
      here, searching for the "exact phrase" $ $ along with 
      @, made this research easy:

 
http://www.jsoftware.com/cgi-bin/forumsearch.cgi?all=%40%2C&exa=%24+%24&one=
&exc=&add=&sub=&fid=&tim=0&rng=0&dbgn=1&mbgn=1&ybgn=1998&dend=31&mend=12&yen
d=2010 


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

Reply via email to