🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: net.lang.apl
Article #106

another bug with scan...

#106
From: Greg Johnson
Date: Sat, 23 Jun 1984 17:20
38 lines
1655 bytes
Lee Dickey mentioned that the scan operator in APL 11 does not work right for
some non-associative operators.  Here is another error:
	+\ iota 0
0
	rho rho +\ iota 0
0

        m { 1 2 0 3 rho 0
	n { 1 2 3 0 rho 0
	+\m

	rho rho +\m
1 2 0 3

	+\n
0
	rho rho +\n
0

It turns out that at least in the APL distributed with 4.2 BSD UNIX
the problem illustrated above is easy to fix.  The result of applying
the scan operator to a function and then to some data is ALWAYS supposed
to have the same shape as the data.  If the last dimension of the data
is zero, then the interpreter tries to return (as a scalar) the identity
element of the function used with scan.  In module ak.c there is an
explicit test to see whether the last dimension is zero, and if it is
the appropriate identity element is created.  This entire "if" statement
(it is about thirty lines long) can simply be commented out.  Its
first line is:

	if(idx.dimk == 0) {

I found this bug while figuring out a solution to the "runs and wedges"
problem of a few articles back.

				- Greg Johnson
				  ...!ihnp4!cornell!gj
				  gj@cornell
Technical Details
Message-ID: <565@cornell.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!watmath!clyde!burl!mgnetp!ihnp4!houxm!houxz!vax135!cornell!gj

Show Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.1 6/24/83; site cornell.UUCP
Path: arc1-ca.pugleaf.net!utzoo!watmath!clyde!burl!mgnetp!ihnp4!houxm!houxz!vax135!cornell!gj
From: gj@cornell.UUCP (Greg Johnson)
Newsgroups: net.lang.apl
Subject: another bug with scan...
Message-ID: <565@cornell.UUCP>
Date: Sat, 23-Jun-84 13:20:42 EDT
Article-I.D.: cornell.565
Posted: Sat Jun 23 13:20:42 1984
Date-Received: Wed, 27-Jun-84 09:04:23 EDT
Organization: Cornell Univ. CS Dept.
Lines: 38