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