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
