Talk:Vocabulary/fork

From J Wiki
Jump to navigation Jump to search

Now that we have an Ancillary Page: Vocabulary/ModifierTrains do we need the following sub-page here at all? ...

u (f g [h]) [v] Modifier train Invisible Modifier

I propose we delete it and replace it with an additional paragraph in More Information of both Vocabulary/hook and this page which simply reads:

See: Discussion and examples of invisible modifiers.

Ian Clark (talk) 23:45, 22 December 2021 (UTC)


The issues I see are:

  • these things look like forks/hooks but are very different
  • we don't want new users to see them
  • The documentation needs to be complete and linked by the main NuVoc page
  • The natural place to look for them is under (f g h) in the main page

I agree with taking them out of the Fork page.

The table that is in the Fork page is the official reference, so it needs to go somewhere.

I like having the banner at the top to indicate that this is a language feature with a name etc. But then, I like the phrase 'Invisible Modifiers".

I suggest giving them a non-Ancillary page, pointed to from the line in the Fork cell in the main grid that says 'Modifier Trains', that has the banner & all below it that is now of the Forks page.

That is, I propose leaving the Ancillary Page to hold examples. The examples there now are too opaque to put into a NuVoc entry, but the people who care about this stuff are likely to have opaque examples.

--Henry Rich 00:05, 23 December 2021 (UTC)


I think fine generally the way it is. The modifier table should show in the Fork page, because that is probably how most will remember to find it. I've copied it to the modifier trains page as well. I hope to improve it over time (early next year) including adding a column in table with useful examples of each train.

--Pascal Jasmin (talk) 01:35, 23 December 2021 (UTC)


  1. I wonder if it would be best to give the "invisible modifiers" their own square in the Nuvoc table that links to https://code.jsoftware.com/wiki/Vocabulary/invisiblemodifiers (it's own page) and have a link at the bottom to the ancillary page that provides a more complete description https://code.jsoftware.com/wiki/Vocabulary/ModifierTrains .
    1. The link from Nuvoc provides essential knowledge.
    2. The link from the Ancillary table (also available from the essential page) provides fuller and more nuanced information.
  2. I do think that we should have a consistent name, whether it is 'modifier trains' or 'invisible modifiers'.
  3. I think that the graphics that we have on the Nuvoc link u (f g [h]) [v]u may be enough to keep newcomers from diving in too early. In addition, we can post a warning at the top of the invisible modifiers page that this is an area of J that requires some study to be useful and is not essential to most practitioner's enjoyment of the language.

--Bob Therriault (talk) 02:54, 23 December 2021 (UTC)


I like Bob's ideas the best so far. We should decide, perhaps on this page, whether to keep the name 'invisible modifiers'. I like it because it is surprising, thought-provoking, and accurate. The sequence of words creates a grammar with no symbols. 'Modifier trains', by Ken's definition of 'train', is any list of words that is not immediately executable to produce a noun. I say that a modifier train is composed of invisible modifiers. BTW I don't like the word 'train' but that ship has sailed.

Henry Rich (talk) 04:15, 23 December 2021 (UTC)


I would advocate for “tacit modifiers” instead of either “modifier trains” or “invisible modifiers” for the following reasons:

  1. “modifier train” unnecessarily introduces new terminology: “train”, which then requires explanation.
  2. “modifier train” doesn’t suggest semantics, i.e., “hmm, train…? does this thing produce a modifier…?” Is it made from modifiers…? Maybe both…?”
  3. “invisible modifier” seems inaccurate because there is no particular modifier that’s invisible. Or at the very least, it’s not clear what modifier we’re referring to as being invisible. If we mean the derived one, I don’t see how it’s any less visible than the equivalent explicit definition. If we’re referring to the interpretation rules laid out in the table, these are not really akin to modifiers, as they relate modifiers themselves, not the operands. So they’re akin to “hyper-modifiers” or what APL calls hyperators. Besides that, this is really a set of grammar rules and may as well simply be called as such rather than trying to artificially squeeze it into a part of speech.
  4. we already usually refer to tacit verbs as such, rather than as verb trains; this is more clear and semantically suggestive. The same applies to tacit modifiers.

I would also suggest “other” (with grey color code) for the “part of speech” box, as is used for (=. =: NB.), as—per above—the tacit modifier grammar is not itself a modifier, nor analogous to one. Similarly for hook and fork, as these really are not conjunctions.

--Cameron Chandoke (talk) 03:26, 6 October 2023 (UTC)


tacit modifier trains?

Pascal Jasmin (talk) 03:34, 6 October 2023 (UTC)


But:

  1. "train" is not really new terminology - it's been used in J documentation for decades.
  2. "invisible modifier" refers to hooks and forks. Hypothetically speaking, we could implement verb hooks and verb forks using an adverb (or a conjunction) but instead it's a special treatment by the parser for what would otherwise be an error condition. However, adverb/conjunction hooks/forks could only be implemented with the introduction of a meta-adverb (conjunction) which could take adverbs and conjunctions as arguments.
  3. Tacit verbs include verbs which are constructed without the use of hooks and without the use of forks.
  4. I highly recommend studying the documentation on J's parser. I think that if you understood how it worked you would be talking about this in a different fashion. --Raul Miller (talk) 06:35, 6 October 2023 (UTC)

  1. Yes, I failed to make clear my thought about terminology; I meant that on each page it may be preferable to only introduce terminology to the reader where necessary. Just a minor consideration.
  2. Within the context of the NuVoc page giving Invisible Modifier as the part-of-speech for Modifier Train:
    1. When you say that “invisible modifier” refers here to hooks and forks, you’re talking about generalized hooks/forks comprised of the meta-[adv’s/conj’s]… correct?
  3. You’re right, I was momentarily forgetting that not all tacit verbs are trains, e.g. (+/@*). Still, whereas “tacit verb” doesn’t necessarily mean a verb train, “tacit modifier” would refer unambiguously to what we’ve been calling “modifier train”. So it could still be a viable option for the phrase we use.
  4. Ok, I will make a point to study the parser documentation. Is there additional documentation on the parser besides the two links you provided (Dictionary section E, and the JforC page on parsing)?

Cameron Chandoke (talk) 21:30, 6 October 2023 (UTC)

There's the trace package (require'trace' followed by trace'+/%#' or whatever sentence you wish to investigate.
Also of potential interest, depending on your perspective: https://www.jsoftware.com/help/learning/91.htm or https://code.jsoftware.com/wiki/Vocabulary/Parsing or https://code.jsoftware.com/wiki/Books/MathForTheLayman/Language_and_Grammar or https://www.jsoftware.com/papers/AIOJ/AIOJ.htm or https://www.jsoftware.com/ioj/iojSent.htm
Also... there's currently a DNS server which has messed up records for jsoftware.com. So you might get security errors trying to load some of these pages. If that happens, usually reloading the page will work around the problem. --Raul Miller (talk) 00:15, 7 October 2023 (UTC)

"Modifier" vs "adverb" or "conjunction"

It's worth thinking about reverting some of the changes made on this page.

"modifier" is shorthand for "adverb or conjunction". Its use should not be used to remove information from the page. --Raul Miller (talk) 13:59, 7 October 2023 (UTC)