Probably?

But you don't need a gerund, just accessors

Basically, you'll do something like (expr)@:u or ([: expr u), and in
the context of expr, 0&{:: gets the contents of the first box and
1&{:: gets the contents of the second box.

You may also want to do something like (expr)@:(+each&(0;0))@:u to
enforce a structure on the result of u.

That said, once I learned this technique, I discarded it -- I feel
that explicit local names are a better choice.

Still, this might help?

-- 
Raul

On Tue, Jun 2, 2020 at 4:39 AM Hauke Rehr <[email protected]> wrote:
>
> Thanks for showing a way to do it.
> I knew all that repetitive 'n&' stuff
> must be avoidable.
> I understand tacit adverbs are mostly gone
> and most likely better avoided.
>
> One question remains:
> is there a way to do 2.(b) without assignments?
> Maybe using a gerund instead of u;v?
>
> Am 02.06.20 um 10:28 schrieb Raul Miller:
> > It's might be worth noting that
> >     |. onsub 2 mat
> > 4 14 10 14  7 13
> > 6  9 15 10 18  1
> > 3  5  9  9  7 16
> > 8 12 11 18 16 18
> > 5  6  1  1  9 10
> >
> > can be replaced with
> > onsb=: 1 :0
> >    {., ([ }. {."1) ,. [: u [ }."1 }.
> > )
> >
> >     2 |. onsb mat
> > 4 14 10 14  7 13
> > 6  9 15 10 18  1
> > 3  5  9  9  7 16
> > 8 12 11 18 16 18
> > 5  6  1  1  9 10
> >
> > And there's tricks you can use even nowadays to rephrase an explicit
> > one line adverb like this into a tacit adverb. though in my opinion
> > they do not help its readability -- that said, this might be overcome
> > through the use of meaningful names for the components. You can do
> > that even here, though:
> >
> > toprows=: {.
> > leftrows=: [ }. {."1
> > bodyrows=: [ }."1 }.
> > onsb=: 1 :0
> >    toprows, leftrows,. [: u bodyrows
> > )
> >
> > But... that said, there can be a problem in production code with this
> > approach, which has to do with stepping on names. If you go fully
> > tacit, you can remove the intermediate verb names from the result,
> > which lets you assemble code which avoids verb name collision issues.
> > (It also can make it a representation of the code harder to read,
> > which might be seen as an advantage in intellectual property contexts.
> > However, there aren't a lot of J programmers, and in international
> > contexts ... there have been ... bigger problems.)
> >
> > But the big win, here, is that you can take the implementation of
> > onsb, and turn it into a conjunction (introducing a v) and thus
> > perform an arbitrary operation on more than the 'bodyrows'.
> >
> > I hope this helps,
> >
> > --
> > Raul
> >
> >
> > On Mon, Jun 1, 2020 at 10:30 PM Hauke Rehr <[email protected]> wrote:
> >>
> >> I usually do tacit programming with J,
> >> but what I mean by this is I don’t use x or y
> >> that is I can write tacit _verbs_ only.
> >> I know one can be tacit on modifier level etc
> >> but I didn’t ever learn how.
> >>
> >> 1. is there any good place to start learning?
> >>      if not, would anyone mind putting together
> >>      some material on this?
> >> 2. here is an example of something that in terms
> >>      of data manipulation is not very J-ish
> >>      but let’s assume I need to do it this way
> >>      for some reason:
> >>      onsub =: 2 : 'n&{. , n&}.@:(n&{."1) ,. u@:(n&}."1)@(n&}.)'
> >>      (
> >>       first I wrote it as an adverb without all the 'n&' parts,
> >>       then I generalized by adding them – it’s repetitive
> >>       but it does what I want it to do
> >>      )
> >>      usage is like
> >>      |. onsub 2 mat =: ? 5 6 $ 20
> >>      reversing (mirror) the 3 by 4 lower right submatrix
> >>
> >>      (a) how to write this without reference to u or n?
> >>      (b) what if I wanted to use it like this:
> >>          (|.;#) onsub 2 mat
> >>          with the result like everything happening in onsub
> >>          after application of u will work on its >@{.
> >>          and after everything is done its }. will be ;ed.
> >>
> >> btw feel free to alter this thread’s subject, I just don’t know
> >> what direction this will take so I picked the broad 'tacit' key
> >>
> >>
> >> --
> >> ----------------------
> >> mail written using NEO
> >> neo-layout.org
> >>
> >> ----------------------------------------------------------------------
> >> For information about J forums see http://www.jsoftware.com/forums.htm
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
>
> --
> ----------------------
> mail written using NEO
> neo-layout.org
>
> ----------------------------------------------------------------------
> 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