On Fri, Jul 20, 2012 at 4:02 PM, Ian Clark <[email protected]> wrote: > Thanks, Raul. >>> 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' ? >> >> What's wrong with that? > > What indeed? -- for the overwhelming majority of cases. If it turns > into an impossibly large noun, then just too bad.
In this context, you are dealing with a representation of some element which must already exist. So "impossibly large" probably implies a bug. Meanwhile, the formal proof systems that I have looked at routinely ignore resource limits in their proofs. > I was trying to get right away from physically constructing (baa) each > time. My original approach had me doing just that, covering each verb > I found, running the tooled-up expression with test data and looking > to see if each (baa) was called monadically or dyadically, and with > what argument(s). If the algorithm runs to completion in reasonable > time, it's cast-iron. > > But, trained as an algebraist, I wondered if a useful subset of J > syntax (without copulas, and confined to verb trains) could be reduced > to a formal axiomatic system and handled by substitution rules: like a > semigroup presentation. > > At the time I guessed not - and your answer to my question 3 > reinforces that view: that J is "implementation defined" (like every > other programming language I know, with the possible exception of > Prolog) and therefore not (in the general case) amenable to algebraic > manipulation... > http://www.jsoftware.com/jwiki/Guides/Language%20FAQ/J%20BNF > more-or-less says as much. The issue here, from my point of view, is completeness. J's tools are implemented in J, so J needs some open ended features or it could not support J. If you do not care about supporting such "recursive toolbuilding", you can draw the line wherever you want and work with a subset which you support and declare the rest as "out of scope". For example, if I wanted to implement some BNF version of J, I would pick a single result type to support, for each built in adverb and conjunction (probably verb for : and noun for `) and ignore the other possibilities. This would prevent me from even having to consider explicit adverbs and conjunctions, which makes BNF easy (though I would still need to check name class when dealing with names). -- Raul ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
