I agree with that. Tacit code usually does have a small speed advantage
because it doesn't have to parse each sentence; so I write tacit verbs
for those functions that are very well defined and unlikely to change.
Assignments in explicit code interfere with inplacing and virtual
blocks. Thus,
rcdlens =. y - x
allbutfirst =. }. rcdlens
allbutlast =. }: rcdlens
rcddiff =. allbutfirst - allbutfirst
You can figure out what the code does even without any comments. But
rcddiff =. (}. - }:) y - x
will run much faster, because the results of }. and }: do not need to be
realized.
Thus, even if you write explicit verbs, you should tend toward long
sentences, and all those skills you developed in writing tacit verbs can
still be put to use.
Henry Rich
On 6/2/2020 3:32 AM, R.E. Boss wrote:
Perhaps your three arguments can be extended to "only use tacit code which belong to
or contain special
combinations<https://code.jsoftware.com/wiki/Vocabulary/SpecialCombinations>,
elsewhere use explicit code”.
R.E. Boss
-----Original Message-----
From: Programming <[email protected]> On Behalf Of Henry
Rich
Sent: dinsdag 2 juni 2020 04:50
To: [email protected]
Subject: [Jprogramming] tacit modifiers WAS: tacit
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)<mailto:n&%7d.@:(n&%7b.%221)> ,.
u@:(n&}."1)@(n&}.)<mailto:u@:(n&%7d.%221)@(n&%7d.)>'
(
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
--
This email has been checked for viruses by AVG.
https://www.avg.com
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
--
This email has been checked for viruses by AVG.
https://www.avg.com
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm