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

Reply via email to