Newsgroups: comp.lang.apl
Path: watmath!watserv2.uwaterloo.ca!torn!cs.utexas.edu!zaphod.mps.ohio-state.edu!howland.reston.ans.net!spool.mu.edu!darwin.sura.net!newsserver.jvnc.net!phage!wchang
From: wchang@phage.cshl.org (William Chang in Marr Lab - CSHL)
Subject: APL?! (APL who bang)
Message-ID: <C1Gx6E.1xo@phage.cshl.org>
Organization: Cold Spring Harbor Lab, Long Is New York
References: <1993Jan21.160604.7887@lth.se> <1993Jan23.100553.21973@lth.se> <C1Gwxn.1q9@phage.cshl.org>
Date: Tue, 26 Jan 1993 15:47:01 GMT
Lines: 50

APL?!                                                 DRAFT 30 March 1992

A quick summary.  The most commonly used APL operations are given symbols.
There are few symbol combinations.  Keywords are named after functions
instead of glyphs because glyph names are more verbose and less standard.
Ambivalent APL symbols are given the dyadic function name, because it is 
not always possible to distinguish (automatically) between monadic and 
dyadic use--better to stick to the dyadic name uniformly.  Luckily, the 
less intuitive times-sign, modulo-magnitude have symbols instead of keywords. 
As for user names conflicting with keywords, I suggest using the opposite
case for keywords.


? rho [looks a bit like rho; query an array for its shape]
! iota [upside-down i; factorial is product of 1 2 3 ... n]
^ take [head; looks like up-arrow]
~ drop [tail; array less head]
# execute [convert to number]
$ format [convert to string]
= < > ~= <= >= comparisons
+ - * % | arithmetic (plus minus times divide modulo)
/ reduce and compress; \ scan and expand
/[!1] \[!1] along leading axis [/-minus and \-minus are unnecessary]
.f. outer-product
f.g inner-product

not and or nand nor power log [keywords]
rotate [reverse is rotate by 180 degrees]
rotate[!1] along leading axis [circle-minus is unnecessary]
transpose member up down encode decode choose solve deal circle [keywords]

-> goto; <- gets [so A< -B must be written with a space]
<> separator; o} comment
@ quad; "@ quote-quad; & delta; _& underscore-delta 
_number (negative constant); "name (glyph name for I/O purposes)


I hope this is a relatively straight forward solution, to the problem
of transliterating (most of) ISO APL.  Whether or not anyone will use
it is another matter.  Although I personally think APL/! is more
consistent and economical in terms of design, I do not necessarily
prefer it.  In any case, I got no converts :-)

I would like to thank everyone who has contributed to the discussion.
Further suggestions are also welcome!


-- Bill Chang (wchang@cshl.org)         Cold Spring Harbor Lab., NY

p.s. How should one pronounce ?!
