🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: net.lang.apl
Article #48

Report on APL/11

#48
From: utzoodecvaxharponpoivnpoishouxmi...
Date: Mon, 29 Nov 1982 21:00
54 lines
3056 bytes
This is just a note to let people know that I am about to release in this
newsgroup my detailed reactions to using the APL/11 program available from
Purdue for PDP-11's and VAXen.  This soon-to-come analysis will include a
listing of the log I have been keeping while using this APL program.
However, I thought it would be useful to present my general reaction to this
program now even in the absence of detailed support.  Therefore, ...

I am pleased to have in APL/11 an implementaion of APL that works reasonably
well.  I have an APL terminal, and it is quite nice to get into the program
from UNIX(tm), flip it into APL mode, and use the program as a powerful desk
calculator. The typical, middle-of-the-road kind of things that one usually
wants to do with APL primitives work correctly in this use, and there is
quite a lot of power at ones fingertips with this program.

However, this APL is non-standard in many ways -- ways that become important
when function definition is employed.  At such a time more precise,
complete, and exacting use of the language is required. I have found that
APL/11 misbehaves under many boundary conditions which become evident when
workspaces are being defined with collections of functions.

A typical example is the following: a useful idiom in APL for telling if an
array A is character or numeric is

                       ' ' = 1 take 0 take ,A

It returns 1 if 'A' is a character array, and 0 otherwise.  Unfortunately,
this idiom fails in APL/11 in two ways.  First, a '1 take' from a null
vector in APL/11 does *not* produce a vector of zeros or blanks, as expected
(depending on the type of the null vector). Instead, it erroneously produces
floating point numbers or non-printing characters. Secondly, there is a
non-standard restriction in APL/11 that makes

                            ' ' = 0

an illegal expression.  Thus the first expression fails -- producing an
error message -- if 'A' is numeric.  The test can be reformed into APL/11 as

               ' ' = -1 take format -1 take 2 take 1 take ,A

where all the '-' signs represent overbar characters.  However, this is
clearly more complicated than it needs to be.  It is also rather frustrating
to have to work around such non-standard difficulties because of
implementation constraints.

I have found numerous similar instances, which can best be described as
*boundary condition failures*, where primitives fail in the presence of null
vectors or multidimensional arrays but work correctly when the arguments are
garden-variety vectors.  I will present more detail about all this in my
forthcoming report to this group.

George Otto
Bell Labs, Indian Hill
----------------------
Technical Details
Message-ID: <bnews.iheds.186>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
From: utzoo!decvax!harpo!npoiv!npois!houxm!ihnp4!iheds!otto
Newsgroups: net.lang.apl
Title: Report on APL/11
Article-I.D.: iheds.186
Posted: Mon Nov 29 21:00:54 1982
Received: Wed Dec  1 08:11:00 1982
Subject: Report on APL/11
Date: Mon, 29 Nov 1982 21:00:54 +0000
Message-ID: <bnews.iheds.186>