 Online
 1.0
Remembering Eugene McDonnell
Roger Hui
1926 – 2010
Originally presented by Roger Hui at the APL2010 conference in Berlin, 13 Sep 2010.
When I met Eugene McDonnell in 1981, there were traces of humidity behind my auricular orifices.
Since my pronunciation may be a bit off, and since I don’t want you to think that I thought of the witticism all by myself, let me show you where it comes from:
When I met Clark Wiedmann in 1968, there were traces of humidity behind his auricular orifices.
Eugene McDonnell
Minnowbrook APL Workshop 1985
APL QuoteQuad, 16.3, 198603
Recreational APL
 Magic Squares and Permutations
 Spirals and Time
 How Shall I Transpose Thee? Let Me Count the Ways
 The Story of
○
 How the Roll Function Works
 The Caret and the Stick Functions
 The Point of No Return
 Sauce for the Gander (or Adding a Vector to a Matrix)
 Making a Calendar
 1980 Year’s Digits Problem
 Puzzle of the Year 1980 (solution)
 Pyramigram
 Numbering Crossword Squares
 Pyramigram (solution)
I first knew of Eugene as the “Recreational APL” editor. In those days, on receiving an issue of the APL QuoteQuad, I would inevitably and eagerly first turn to the “Recreational APL” column. Through these columns I learned that it was possible for technical writing to be erudite, educational, and entertaining, and through them I learned a lot of APL. Jeffrey Shallit, professor of mathematics at the University of Waterloo, recently wrote[1] of his similar experience with “Recreational APL”.
Language contributions
 circle
x○y
 signum
×y
 extension of
xy x⊤y
for negativex
⌈y ⌊y xy x⊤y
for complexx
andy
 extension of
x∨y x∧y
as GCD and LCM 0 = 0 ÷ 0
 infinity and infinite arrays
 hook and fork
Later, I found out that Eugene was also a key contributor to the development of APL. I don’t have time here to go into the details of all the language contributions, so I’ll just touch on two.
The Story of ○
x○y 
x 
(x)○y 
(1y*2)*0.5 
0 
(1y*2)*0.5 
sin y 
1 
arcsin y 
cos y 
2 
arccos y 
tan y 
3 
arctan y 
(1+y*2)*0.5 
4 
(¯1+y*2)*0.5 
sinh y 
5 
arcsinh y 
cosh y 
6 
arccosh y 
tanh y 
7 
arctanh y 
Anyone who has ever used the circle function probably wondered about the numbering of the left argument x
.
The explanation usually hinges on the fact that x○y
is an odd or even function depending on whether x
is an odd or even integer, then goes on to explain what is an odd or even function. But the real explanation is as follows.
In Eugene’s own words in The Story of ○
[2]:
Actually, 1 and 3 were chosen first, more or less by accident, for the sine and tangent, along with 2 for the cosine function, by listing the functions in the order in which they were taught me in high school, and then the observation was made about sine and tangent being odd functions. The hyperbolic functions simply fell into place afterwards.
Extending APL to Infinity – McDonnell and Shallit, APL80.
 infinity
 infinite arrays
The other language contribution that I want to touch on was proposed by Eugene and Jeff Shallit in the APL80 paper “Extending APL to Infinity”. The proposal had two parts: infinity as a number, and infinite arrays.
NARS2000  J 
⌊/ '' ∞ ÷0 ∞ 2 * 3333 ∞ 
<. / '' _ %0 _ 2 ^ 3333 _ 
To date, infinity has been implemented in NARS2000 and J, denoted as a ‘sideways 8’ (∞)
in NARS2000 and as the underscore (_
) in J. For example, the identity element of minimum is infinity
instead of a finite number; the reciprocal of 0 is infinity instead of an error; and 2 to a large power
is infinity instead of an error.
i. 4 0 1 2 3 i. _ 0 1 2 3 4 5 ... +/ 3 ^  i. _ 1.5
To date, no APL has implemented infinite arrays. When they are implemented, you can do the following:
The index generator function on n
gives the natural numbers less than n
;
the same function on infinity gives all the natural numbers. Having infinite arrays facilitates working
with infinite series and limits of sequences.
p: i. _ 2 3 5 7 11 13 ... R=: +/ (1 + i. _)^s E=: */ % 1  (p: i. _)^s R = E 1
In J, p:
is a function and p: n
is the n
th prime, therefore p:
on the index generator on
infinity are all the primes. So the Riemann zeta function can be computed as
R=: +/ (1 + i. _)^s
and the Euler product of all the primes can be computed as
E=: */ % 1  (p: i. _)^s
That these are equal was shown by Euler in 1737 using highschool mathematics. The identity is one of the most beautiful things that humanity has to offer. (Suitable for presentation to the Galactic Emperor[3].)
At Play With J
41 columns in Vector
Written between 1993 and 2006
Published by in 2009
Eugene remained active after he retired from paid employment in 1990. He wrote 41 At Play With J columns for Vector between 1993 and 2006. These columns have been collected together and published as a book. For the duration of the conference you can order this book from Lulu[4] at cost, or download the electronic version for free. (Thank you, British APL Association and Vector Books, for this generous offer.)
eem=: 1926 10 18 ,: 2010 8 17 daynum eem 46310 76929 ~/ daynum eem 30619 kei=: 1920 12 17 ,: 2004 10 19 daynum kei 44179 74801 ~/ daynum kei 30622
Eugene wrote about calendar calculations in a Recreational APL column[4]. Using a descendant of those functions, we see that Eugene’s lifespan was 30619 days. For Ken Iverson, it was 30622 days. So Eugene and Ken, whose careers and lives are so interwined, have one more connection.
I smile in my heart when I think that in heaven, Ken now has an ally in his debates with the Almighty on the finer points of language design. I positively chuckle at the thought that, in the extremely unlikely event that they are in that other, warmer, place, 0origin indexing now has another advocate against the entity in charge.
References
 Jeffrey Shallit, “Remembering Gene McDonnell”, quoted in http://www.jsoftware.com/papers/eem/anecdotes#jos

Eugene McDonnell, “The Story of
○
”, http://www.jsoftware.com/papers/eem  Roger Hui, “Bring something beautiful”, Vector 24.3, http://www.vector.org.uk/?vol=24&no=3&art=hui
 At Play With J (2nd edn) at Lulu.com http://www.lulu.com/product/paperback/atplaywithj[edn2]/6073726
 Eugene McDonnell, “Making a Calendar”, APL QuoteQuad 10.1, http://www.jsoftware.com/papers/eem/qq101.htm