Article View: net.lang.apl
Article #48Report on APL/11
From: utzoodecvaxharponpoivnpoishouxmi...
Date: Mon, 29 Nov 1982 21:00
Date: Mon, 29 Nov 1982 21:00
54 lines
3056 bytes
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-mailShow 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>