(;@:) 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
