[ The Types Forum, http://lists.seas.upenn.edu/mailman/listinfo/types-list ]
Philip Wadler writes: > I finally downloaded a scan of "The FORTRAN automatic coding system". The > word type appears several times, for instance to distinguish "IF-type > statement" from "DO-type statement", but is not used to distinguish > fixed-point from floating-point. Yours, -- P > > J. W. Backus, et al, The FORTRAN automatic coding system, Papers presented > at the 26-28 February 1957, Western Joint Computer Conference. > http://dl.acm.org/citation.cfm?id=1455599 Thanks for clearing that up! I do believe Fortran's distinction between INTEGER and REAL was bascially carried over from assembly languages. In the computers of the day, the instruction set worked on one word-long integers and two word-long floating point numbers. So, even in assembly, one had to reserve different amounts of storage for variables of different types, which amounted to "variable declarations" in assembly. Fortran's variable declarations were basically high-level counterparts of these assembly language incantations. Algol 60 report had a section 2.8 titled "Values and Types" in the preamble where it is stated: The various "types" (integer, real, Boolean) basically denote properties of values. The types associated with syntactic units refer to the values of these units. Note the "types" in quotes, indicating that this was a novel usage of the term in the Algol report. The formal parameters of procedures were declared with "specifiers" and the syntax of specifiers was given as: <specifier> ::= string | <type> | array | <type> array | label | switch | procedure | <type> procedure These are closer to what we call types today. In the History of Programming Languages discussion on Algol 60, Peter Naur indicated that Algol 60 adopted call-by-name parameter passing essentially to provide a single rule of evaluation that covered all these types/specifiers, instead of a separate rule for each specifier (which were apparently considered in earlier drafts). Cheers, Uday
