For all my exposure to J, I can't answer the following simple(?)
questions. Can someone help please?
Take the fully parenthesized representation of a given tacit verb: foo
(viz 5!:6 <'foo')
--note: "verb", not "sentence" (which might be a noun).
Take what's inside any pair of balanced parens: (...). Give it a name:
baa, so we can formally replace (...) with (baa) .
1. Is baa always a verb?
Answer: no, because I can make phrases like: (-~) appear.
BUT are there only a small number of special cases I can detect
and allow for, like (-~)?
2. If baa is not a verb, how can I determine its type?
-short of actually assigning it to a local name: baa=. (...) and
calling 4!:0<'baa' ?
3. Is there an easy way to tell if baa gets called monadically or
dyadically, and if it gets the y-argument of foo -- and the x-arg too?
Ignore the case of baa getting an intermediate noun -- I can
determine this from the paren nesting structure.
Ditto a constant.
Note I'm only concerned with the output of 5!:6, not what's
syntactically possible when a tacit verb can be entered by hand, where
a phrase in parens can of course be a noun.
I guess the answers can in principle be found from a very careful
reading of Help > Dic > E. Parsing and execution, and F. Trains. But I
must confess this is beyond me. Has the matter been summed-up
elsewhere more clearly?
(And -- no, I haven't forgotten tte.ijs.)
Ian
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm