I call explicit adverbs that don't refer to x or y semi-tacit.  These have all 
of the advantages of a tacitly written adverb:  Result of bound adverb is tacit 
and ambivalent.  Can be considered "compiled".

The most important advantage of tacit/semi-tacit adverbs is that they can 
"remain non-nouns" after being bound.  A fully explicit modifier is a verb that 
can just take an extra noun/verb argument.  For example


insert =: 1 : 'u/ y'
scan =: 1 : 'u\ y'
doU =: 1 : 'u y'

There is some inconsistency in that J will "do what you mean" for some of these 
but not all.


+ doU/\ 1 2 3
|domain error

but 

+ insert scan 1 2 3
1 3 6

 +insert doU scan 1 2 3

1 3 6


Basically, some combinations of explicit modifiers will fail when part of a 
train of modifiers.  Some won't.  Not sure what rules are, though perhaps 
explicit definitions have some  " 13 : " like functionality if they are simple 
enough.


On Monday, June 1, 2020, 10:49:46 p.m. EDT, Henry Rich <[email protected]> 
wrote: 





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
>
>


-- 
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

Reply via email to