So I’ll keep writing the way I used to.
I doubt I will ever have the time
to have a look at J4. So I’ll likely
skip the learn and 'fugged' parts :)

Thanks for pointing all this out.

Still I wonder if

* the explicit form is much easier to understand

is kind of a self-enforcing matter:
if noone learns it, noone understands it
and noone uses it regularly
if it were ubiquitous, maybe more people
would bother learning it and it would get
much easier to understand

After all, the average programmer of C syntax
languages takes a glance at J and says
“the C form is much easier to understand”
and if she gets to learn J non-tacitly and
only later takes a look at tacit J she’ll
again say
“the non-tacit form is much easier to understand”

Still I don’t feel reasoning about other people’s tacit J
is actually harder than reasoning about other people’s C.
It’s a matter of getting used to it.

I’m always cautios about statements like this.
That said, I guess you may be right in this specific case.

Am 02.06.20 um 04:49 schrieb Henry Rich:
Not responding to your questions.

There was, in J4 long ago, a beautiful language of tacit modifiers.  I never found a modifier I needed that I couldn't write tacitly.  JfC had a rapturous chapter about it.

Who used it?  Who understood it?  I think I can tell you:

Roger, Pepe, Raul, Dan (Bron), Martin (Neitzel), and I.  (Pascal wasn't around then.)

In J5 Roger euthanized it.  (Actually, his scalpel slipped and he left it in a permanent vegetative state.)  I wept.  Then I got over it. Others still attend at the bedside; I admire their fidelity.

The important facts are:

* there is nothing you can do with the tacit-modifier language that you can't do explicitly
* the explicit form is much easier to understand
* the modifier step is never important for performance, because it happens before the verbs get executed.

Now that the task of maintaining the JE has fallen to me, I am glad Roger did what he did, because having all those needless forms would slow down parsing and add to the number of special cases involved.

Get a copy of the J4 Dictionary and study the parser as an exhibit of Ken mastery of computational forms.  Then fuggedaboutit.  Your onsub is fine.

Henry Rich

On 6/1/2020 10:30 PM, Hauke Rehr 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

Reply via email to