Newsgroups: comp.lang.apl
Path: watmath!watserv1!70530.1226@compuserve.com
From: Mike Kent <70530.1226@CompuServe.COM>
Subject: APL acceptance
Message-ID: <920513071539_70530.1226_CHC41-1@CompuServe.COM>
Sender: root@watserv1.waterloo.edu (Operator)
Organization: University of Waterloo
Date: Wed, 13 May 1992 07:15:40 GMT
Lines: 43

In article <1992May12.013709.3279@csi.jpl.nasa.gov>, sam@csi.jpl.nasa.gov
(Sam Sirlin) writes (a propos barriers to APL acceptance):

> |>  ... why oh why does apl ignore the directory structure? ...
> This must be IBM?

Ain't IBM.  I posted a message on Saturday pointing out that APL2/PC
_can_ surrogate directories as APL libraries.  I just looked in the
PROFILE32 workspace of the new 1.02 release, and the PROFILE function
function in that ws gives examples of how to do this.

> Lack of a way to group functions ...

Mainframe APL2 has two ways to address this problem:  

   1.  Grouping variables.  A character matrix holding one name per line
       can be used to alloww "indirect copying".  For instance if        
       workspace WS has such a variable, named GROUP, then the system
       command ")COPY WS (GROUP)" brings all the entities listed in
       GROUP into the active workspace.  You can also get rid of them all
       with ")ERASE (GROUP)".

   2.  []NA (packaged workspaces).  This is the nifty way, an advance in 
       pure APL technology on the same level as generalized arrrays.  You
       can write a workspace, package it specifying what names are visible
       to the rest of the world, and use []NA to set up the link between
       the name scope of the active workspace and the packaged workspace.
       Packaged wss can reference other packaged wss.  The packaged code
       is not loaded into memory until one of the []NAed fns/ops/vars is
       referenced.  The packaged code is _fully sharable_; it can be 
       placed into the LINK PACK area on MVS systems, or into a DCSS on
       VM systems.  The all-APL issue of the IBM Sys. J. has an article
       by Michael Wheatley which discusses the philosophy, design, and
       implementation of this facility; it's _well_ worth reading.  
       Finally, packaged wss can reach back into prior name scopes to grab
       values or execute expressions:  finally, a way to write a RELABEL  
       which (1) can be highly modular and (2) is _immune_ to name 
       shadowing -- no variables named delta-delta-O0oI1-delta-delta-23.  

Don't know if these facilities are the new PC release yet, but I would be
(_very_ pleasantly) surprised ... maybe in the rumored-to-be-forthcoming
OS/2 version, though.

