(;@:) is an example of a partially applied conjunction (I'm not sure
there's an official name for this). As an adverb, it will use the verb
argument as the missing argument to @: like this:

   f(;@:)
;@:f

(here f is just an undefined name). So the bit of code in question is
equivalent to

   af&.>(;@:)
;@:(af&.>)

I find the adverb form to be a bit clearer since it can be read from
left to right (apply af on each box, and raze the result) as opposed to
the second, where af&.> is read left to right and the reader has to jump
back to the left to read ;@: . It also allows for factoring out af's
modifiers into an adverb train that can be assigned:

inline =: (&.>)(;@:)

so that (af inline) is a bit like (af&>) except that the former combines
the results into a flattened list with no fills.

Marshall

On Mon, Feb 11, 2013 at 01:51:03PM -0500, Brian Schott wrote:
> Marshall,
> 
>       In your post you use the adverb (;@:) . My experiments suggest that
> it is a way to use only the left argument of a dyadic verb. Is that
> correct, and how does it work? I am especially intriqued that is
> seems to work on the middle tine of a fork.
> 
>    3([(;@:) ])7
> 3
>    3(<@[(;@:) <@])7
> 3
>    3(<@[(;@:) ])7
> 3
> 
>       An example of your code is below.
> 
> remel =: ([ }.~ [: >: i.)"_ 0
> 
> allfactors =: af q:
> 
> af =: [ , 4 : 0 ^: (*@#@])
>   x (% af&.>(;@:) y <@remel ]) ~.y
> )
> 
> 
> ----------------------------------------------------------------------
> 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