Technically, J doesn't have 'adjectives', and [roughly speaking] 'adverbs' and 'conjunctions' might be called 'typed macros' in some other language.
As for which to choose -- when you need a modifier, you should probably assume you need an adverb, if you do not have an obvious reason to choose a conjunction. (Also, I prefer to avoid the use of x and y in adverbs except where using u or m by itself is insufficient.) Thanks, -- Raul On Tue, Aug 11, 2020 at 8:48 AM Alex Shroyer <[email protected]> wrote: > > Coming from a functional programming background, I always find it jarring > that x and y can't themselves be verbs. Even though I find the > pseudo-English "adverbs", "adjectives", and "conjunctions" fascinating, > they don't seem to fit with programming as well as verbs and nouns. > > I've since come to understand some reasons for the design choice: it > encourages less data abstraction, maybe makes implementation simpler or > faster, etc. But when I program in J, I sometimes have a problem which > would naturally (to me) be solved with higher-order functions, and I never > know if I should use a conjunction or an adverb. > > No suggestions, just sharing my experience as a J user. > > Best, > Alex > > On Mon, Aug 10, 2020, 2:48 PM Paul Jackson <[email protected]> wrote: > > > Thanks for your message. I know it has taken me a few days to respond, but > > I have not been ignoring you. In fact I've spent several hours trying to > > understand the issues with adverbs and conjunctions. It was only after a > > careful re-reading, that I finally realized what you were telling me. > > > > foobar=. 1 : 0 > > > > x -10 > > > > ) > > > > 4 foobar > > > > _6 > > > > I don't believe I would ever have thought to try that without your message. > > Now that I have, I believe the issue grows from Ken's initial Direct > > Definition models. They only had two arguments: > > > > ⍺ and ⍵ > > > > The first J implementations I saw looked a lot like direct definition. > > > > As manager of the SAX project, it was my job to decide which features we > > could include. As a consequence, I had some lengthy arguments with Ken over > > his current thinking about how to provide features I now see in J. > > Interesting as those stories are to me, they don't belong in this forum. > > > > Paul (formerly: [email protected]) > > > > On Fri, Aug 7, 2020, 9:10 AM Henry Rich <[email protected]> wrote: > > > > > Is it a bug? More a continuing penance for an initial faulty design. > > > > > > https://code.jsoftware.com/wiki/Vocabulary/com#Details note 11 describes > > > the situation. > > > > > > In early J, the names u/v/m/n had not been invented, and an explicit > > > modifier had only the names x and y to work with. x was what we now > > > call u, and y v. Obviously, such a modifier was very restricted: to > > > produce a modifier as we now know it, with access to u/v/x/y, the > > > modifier would have to create the text after substituting its x/y, and > > > have that reinterpreted by (3 : n) to create a verb. That definition > > > didn't last long, but while it was in force a few simple system > > > modifiers were written, for example > > > > > > bind > > > 2 : 'x@(y"_)' > > > > > > Nowadays we would write 'u@m' or 'u@(m"_)'. The language wasn't even > > > weaned and it had a compatibility problem! > > > > > > The 'solution', still in place today, was to inspect the text of the > > > modifier. If no reference to u/v/m/n is found, the modifier is assumed > > > to be old-style, and the names x and maybe y are defined as the modifier > > > arguments. With your example, an adverb has no y, so y is left > > > undefined and you get a value error. This error is detected when (1 > > > now) is executed. You want a new-style modifier that defers execution > > > until the (modifier+u/v) sees 'cat'. > > > > > > To get a new-style modifier, you have to have u/v/m/n in there > > > somewhere. Just as you discovered. > > > > > > Henry Rich > > > > > > > > > On 8/7/2020 11:28 AM, Paul Jackson wrote: > > > > This is not where I began. I had lots of use of the m argument, but all > > > of > > > > it in quotes. It took me a while to isolate the problem to something > > this > > > > simple. Now that I have, I have also found other errors are signaled > > with > > > > the dyadic case of an adverb, and both cases of a conjunction. As my > > > second > > > > example shows, I can avoid the problem with an unnecessary use of the > > > name. > > > > I can provide details if anyone has trouble replicating the rest of the > > > > issues. What I'm hoping for is a confirmation that this is a bug. > > > > > > > > Paul > > > > > > > > now=: 1 : 0 > > > > y > > > > ) > > > > 1 now'cat' > > > > |value error: now > > > > | y > > > > > > > > now=: 1 : 0 > > > > y [m=. m > > > > ) > > > > 1 now'cat' > > > > cat > > > > > > > > JVERSION > > > > Engine: j901/j64/android > > > > Release-f: commercial/2020-06-12T10:01:40 > > > > Library: 9.01.24 > > > > J Android: 1.4.09/9/28 > > > > Platform: Android 64 (arm64-v8a) > > > > Installer: unknown > > > > InstallPath: > > > /storage/emulated/0/Android/data/com.jsoftware.j.android/files > > > > Contact: www.jsoftware.com > > > > ---------------------------------------------------------------------- > > > > 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 > > > > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
