13 : '(1) x}y' or 13 : '1 x}y' can not be made tacit because they use a function argument (x) as an operand. Similarly 13 : '+/"y x' or 13 : '+/"x y' can not be made tacit either.
Why not, you might ask? The sequence for an operator is that you _first_ derive a function, and _then_ the function is applied to function arguments x and/or y . When you say x} or +/"x or +/"y , at that point you don't yet have the function argument. On Fri, Jul 26, 2019 at 9:40 PM Devon McCormick <[email protected]> wrote: > I am intrigued by tacit programming but agree with Henry that you should > drink the Kool-Aid with slow, measured sips. > > I continue to rely heavily on "13 : .." (to the dismay of tacit die-hards) > but still puzzle over why certain expressions cause it to give up, e.g. > > 13 : '(1) x}y' > 4 : '(1) x}y' > > Yet this works > x=. 2 4 6 > y=. i.10 > (1) x}y > 0 1 1 3 1 5 1 7 8 9 > > Whereas these do not: > x ((1) [}]) y > 0 1 2 3 4 5 6 7 8 9 > x ((1)& [}]) y > 0 6 2 3 4 5 6 7 8 9 > > > On Fri, Jul 26, 2019 at 11:53 PM Henry Rich <[email protected]> wrote: > > > Yes, you have to think differently. > > > > Please, don't make a fetish of tacit programming. The important thing > > about becoming a J programmer is training yourself to look at the whole > > problem rather than working with atoms. That is, getting over the loop > > mindset. > > > > Problem: You have an array a and you want to apply a linear function > > y=3x+1 to every atom. How do you do it? > > > > 0. (3 * a) + 1 > > Bravo! You didn't have to loop. Full marks. > > > > 1. 1 + 3 * a > > Piu bravo! You are thinking right to left. > > > > 2. (1 + 3&*) a > > Bravissimo! You have written a little bit of tacit code. You could > > also have written (1 + 3 * ]) a > > > > 3. 1 3 p. a > > Congratulations, you have reached master level. Let the interpreter > > sweat the details. > > > > > > My very first J program was a model of texture processing for a > > computer-graphics system. I imbibed the tacit liquor too deeply, and > > wrote the whole thing as a sequence of tacit verbs, 50 of them. It > > worked. It was absolutely unmaintainable. Don't go there. > > > > Use tacit verbs for problems whose spec is mathematically unchangeable. > > For everything else, use explicit verbs. > > > > Henry Rich > > > > > > > > > > > > On 7/26/2019 7:20 PM, The3DSquare Josh Yang wrote: > > > I was wondering if you guys have any resources for learning tacit > > > programming in J. I've been struggling with tacit programming, probably > > > because all the other programming languages are mainly explicit. > > Something > > > like "Tacit programming for the explicit programmer" would be great > > since I > > > often fail to derive the tacit equivalent of a series of explicit > > > eeaxpressions (especially when there are mutable variables). > > > > > > I know I need to think differently, but having some guidance would help > > > greatly. > > > ---------------------------------------------------------------------- > > > 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 > > > > > -- > > Devon McCormick, CFA > > Quantitative Consultant > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
