Erann Gat <gat@jpl.nasa.gov> wrote:
+---------------
| Every language I know seems to get along just fine overloading + for ints
| and floats (and others in many cases) ...
+---------------
Just as an aside -- for historical trivia purposes, not that it
really applies to this thread -- in the BLISS language data is
completely *untyped*, it is instead the *operators* which are typed,
exactly as it is in assembler languages. Thus BLISS's "+" is typed
(int x int) -> int, while BLISS's FADR (Floating ADd and Round) operator
is typed (float x float) -> float. The following code is a legal BLISS
expression[1], though probably not something anyone would want to do very
often:
begin local a, b;
a := 1.0 fadr 1.0; ! that is, 2.0
b := .a + 1;
.b fsbr .a ! fsbr is floating subtraction
end
On a machine with IEEE floating point, that block should yield a
value of roughly 2.38e-07... ;-}
Though maybe this *does* have some applicability to this thread after all.
Oddly enough, practical exerience in BLISS showed[2] that "type errors"
were one of the *least* common sources of programmer error in BLISS code.
Much more common were misplaced/missing/extra dots (the "contents-of"
operator) and semicolons (which in BLISS are expression *separators*,
not statement terminators).
-Rob
[1] Note: "." is "contents of" operator. I have also taken the liberty
of using ":=" to represent the BLISS assignment operator, since that
was originally the ASR-33 back-arrow character, which codepoint ASCII
replaced with underscore. ["b := .a + 1" is easier to read than
"b_.a+1", yes?]
[2] I *think* the following paper may be where this was reported,
but I'm not completely sure:
Wulf, W. A., et al., "Reflections on a Systems Programming
Language," Proceedings of the SIGPLAN Symposium on System
Implementation Languages, Purdue University, October 197l.
It may have been here:
Wulf, W. A., "Systems for Systems Implementors: Some Experiences
from Bliss," Proceedings of the FJCC, November 1972.
Or somewhere else entirely (such as a paper called "Why the dot?",
which I can't find a reference to at the moment)...
-----
Rob Warnock <rpw3@rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607