Newsgroups: comp.lang.apl Path: utzoo!utgpu!news-server.csri.toronto.edu!torsqnt!tmsoft!itcyyz!yrloc!rbe From: rbe@yrloc.ipsa.reuter.COM (Robert Bernecky) Subject: Re: what is j? Message-ID: <1991May18.042957.704@yrloc.ipsa.reuter.COM> Reply-To: rbe@yrloc.ipsa.reuter.COM (Robert Bernecky) Organization: Snake Island Research Inc, Toronto References: <199113.993.337@canrem.uucp> <3970007@hpwrce.HP.COM> <1991May18.004902.29060@yrloc.ipsa.reuter.COM> Date: Sat, 18 May 91 04:29:57 GMT In article <1991May18.004902.29060@yrloc.ipsa.reuter.COM> hui@yrloc.ipsa.reuter.COM (Roger Hui) writes: >a) J is an interpreter, but the subclass of verbs known as tacit >definitions are compiled. For example, the following verbs are compiled: > square =. ^&2 > sqrt =. ^&0.5 > norm =. sqrt & (+/) & square > Umm, err. "The following verbs are compiled". Please Explain. My understanding ofcompilation is that you take advantage of knowledge about data types, rank, shape, etc, to produce highly efficient code. Please tell me HOW J achieves this in tacit definition. It seems to me that tacit definition appears to be more like C macro expansion than compilation: e.g., destruction of any evidence of what you originally wrote, rather than true compilation(Destruction plus substantial performance improvement). Furthermore, it appears to my naive view that Tacit Defn also makes it impossiblw to debug a system unless you have maintained source files for everything. For example, if you have a defn for a function "foo" which calls "mean",and you define it using tacit defn, and LATER discover a bug in "mean", you end up fixing "mean", BUT "foo" is NOT fixed unless you recompile the universe. This strikes me as : a. making Real Programs, rather than Toy Programs, harder to develop and debug. b. Increasing the liklihood of bugs in Real Programs. Bob Robert Bernecky rbe@yrloc.ipsa.reuter.com bernecky@itrchq.itrc.on.ca Snake Island Research Inc (416) 368-6944 FAX: (416) 360-4694 18 Fifth Street, Ward's Island Toronto, Ontario M5J 2B9 Canada