All the various LISP 1.5 systems (on the IBM 7090 and
otherwise) appears always to have used only PLUS
, DIFFERENCE
,
MINUS
(unary), etc. (§4.2 p.25) Its small derivative PDP-1
LISP (1964) also did as well (§2 p.3 Table 1, though I don't
know what happened to DIFFERENCE
.)
LISP 2, discussed extensively in the early '60s but never
implemented, did use symbols for arithmetic in the ALGOL-like "source
language," but I think you're not talking about this. The S-expression
"internal language" still used PLUS
etc. (See example of both in
§5.2 on p.13.)
The BBN descendent, INTERLISP (also started on the PDP-1, but
eventually moving to the PDP-10 amongst many other machines) was still
using plus
etc. in 1974, and had added iplus
and friends to do
faster integer arithmetic that avoided boxing the values where
possible. (§13.1 p.13.2) This continued on through at least
1983. (§2.9.4 p.2.44)
The other direct descendant, Maclisp, through at least 1970
was the same, as far as names of numerical functions go. (No list of
functions in this one, but see code on pp. 14, 20, 25, and 30.)
The Start of Symbols
However, by 1973, as well as using 'A
as a shorter form
of (QUOTE A)
(which I think was first introduced in CONNIVER in 1972),
Maclisp started using symbols for arithmetic functions. (§7.1.4). (This seems
to have been part of the changes made during Moon's project to
reimplement Maclisp on the Honeywell 6180 running MULTICS.) However,
these were used for type-specific versions of the
functions; plus
etc. was still used for the generic versions. Here I
quote from the published manual of 1974 because it's much
easier to read.
Section 7 "Functions on Numbers" covers the numerical operations.
From §7.2 "Comparison":
...
greaterp
LSUBR 2 or more args
greaterp
compares its arguments, which must be numbers, from
left to right. If any argument is not greater than the next,
greaterp
returns nil
. But if the arguments to greaterp
are
strictly decreasing, the reault is t
.
>
SUBR 2 args
(> x y) is t
if x is strictly greater than y and nil
otherwise. x and y must be both fixnums or both flonums.
And from §7.4 "Arithmetic":
plus
LSUBR 0 or more args
plus
returns the sum of its arguments, which may be any kind of
numbers. Conversions to flonum or bignum representation are done
as needed. Flonum representation will be used if any of the
arguments are flonums; otherwise fixnum representation will be
used if the results can fit in fixnum form. If it cannot, bugnum
representation will be used.
+
LSUBR 0 or more args
+
returns the sum of its arguments. The arguments must be
fixnums, and the result is always a fixnum. Overflow is ignored.
Symbols Replace Words
The original paper on Scheme, AIM-349 "Scheme: An Interpreter for the
Extended Lambda Calculus" (Sussman and Steele, December 1975)¹,
uses symbols such as =
and +
for the EQUAL
and PLUS
functions,
as you can immediately see from the first example in section 2, and
there's no a mention of the word versions. This seems to be the first
time that these were used for generic, rather than integer
type-specific, functions and replaced, rather than augmenting, the
word functions. This is not formally defined, however, nor
is it in AIM-452 R¹RS. It's not until 1985, with the publication of
AIM-848 R²RS (§II.6 p.39) that the numerical operations are
specifically defined to be +
, -
, etc. and by that time of course
Common LISP had already done this too.
If you want to dig around yourself for more information or try to find
earlier examples, a good source of documentation for many, many
versions of LISP is the Software Preservation Group's History of
LISP page.
¹This is the first "Lambda Paper", and might also retroactively
be called "R⁰RS."