Awhuxlb.205 net.lang.apl utzoo!decvax!harpo!zeppo!whuxlb!ech Wed Apr 7 23:06:40 1982 apl parsing I think the hardest part of parsing APL is distinguishing +/[X]-Y from A[X]-Y Obviously, rabbit!ark is talking about HUMAN, rather than MACHINE, parsing. The typical apl typein program creates internal ("Z-code") representation by a left-to-right (sic) scan; in this case, it is simple to associate the bracket expression with the thing (variable, intermediate value, or operator) immediately to its left. I.e., by the time you "see" the -, you have either absorbed the [...] into an operator (thus - is monadic) or into a value (making - dyadic). But as long as we are on the subject...my pet for the most confusing (to a beginner, at least) aspect of apl is the large number of degenerate objects; to someone with mathematical tendencies, it's a small price to pay for the consistency of almost EVERYTHING, but consider: goto iota 0 goto 0 goto Each of which looks like "go to nothing," each of which has a quite distinct and valuable meaning! To a more advanced apl'r, I submit that the most common pitfall I run into is that some operators distinguish between a scalar and a one-element vector (or higher order array), and some do not. Even if one is possessed of a large store of apl arcana, it is easy to fall into the following kind of trap: VEC1 [ (SCALAR = VEC2) / VEC3 ] + VEC4 Quick: what is the result, assuming SCALAR appears exactly once in VEC2? Answer: "LENGTH ERROR" -- the / operation, and hence the [], each return a vector of length one which (in general) won't match the length of VEC4. This particular kind of problem wouldn't be so bad except that I have to use the kludge ((iota 0) rho vector_expression) to explicitly "cast" the vector to a scalar. By the way, I assume we're all "family" here. I cut my teeth on apl in '67 on an old 1051 term my dad had connected to Yorktown, and have been a fanatic since...anybody else wanna share their favorite gripes? =Ned Horvath= ----------------------------------------------------------------- gopher://quux.org/ conversion by John Goerzen of http://communication.ucsd.edu/A-News/ This Usenet Oldnews Archive article may be copied and distributed freely, provided: 1. There is no money collected for the text(s) of the articles. 2. The following notice remains appended to each copy: The Usenet Oldnews Archive: Compilation Copyright (C) 1981, 1996 Bruce Jones, Henry Spencer, David Wiseman.