A place listing references to the definition of Types (rather than discussion). -- ChanningWalton
See http://www.jot.fm/issues/issue_2002_05/column5
I agree that those articles rely on a basic understanding of a few concepts, however, this is the very foundation of what we do in OO. Its impossible to talk about types (or anything) without these kinds of definitions.
The article seems to solidify the set-based definitions already offered by some. If it is just a many-to-many table of potential operands and operators, then one should focus on sets, not "types". OO is not inherently a set-based paradigm. Besides, what exactly would such a definition lead to? The "weakness" of the implications of such assertion is described near the bottom of ThereAreNoTypes.
The article states: A mathematician considers a type as a set of signatures and constraining axioms. I believe this is the notion that BetrandMeyer? built on and extended.
WingOnTypes : http://reports-archive.adm.cs.cmu.edu/anon/1997/abstracts/97-121.html
Wikipedia: http://en.wikipedia.org/wiki/Type_theory
Cardelli, L., "Type Systems", Handbook of Computer Science and Engineering, chapter 103, CRC Press, 1997 (also at http://research.microsoft.com/Users/luca/Papers/TypeSystems.pdf, http://citeseer.nj.nec.com/cardelli97type.html). Cardelli writes:
"The primary goal of a type system is to ensure language safety by ruling out all untrapped errors in all program runs. [The] declared goal of a type system is usually to ensure good behavior of all programs, by distinguishing between well-typed and ill-typed programs."
and also"A program variable can assume a range of values during the execution of a program. An upper bound of such a range is called a type of the variable."
Also see CardelliTypeTerminology
Hindley, J., Basic Simple Type Theory, Cambridge University Press, 1997 wrote:
"Types are linguistic expressions defined thus:
(i) each type-variable is a type (called an atom). (ii) if s and t are types, then (s->t) is a type (called a composite type)."
Firard, J-Y, Taylor, P., Lafont, Y., Proofs and Types, Cambridge Univ. Press, 1989 wrote
1. Atomic types T1, ..., Tn are types 2. If U and V are types, then U x V and U->V are types. 3. The only types (for the time being) are those obtained by ways 1 and 2.
Bertrand Russell, from his doctrine of types, 1903 [in Sambin and Smith / Loef, 25 Years of Constructive Type Theory] wrote
"A type is the range of significance of a propositional function."
Lof, in Sambin and Smith / Loef, 25 Years of Constructive Type Theory wrote
A type is well-defined if we understand... what it means to be an object of that type.
(Oddly, I've found this the most usable of the definitions.)
RaphaelFinkel, in AdvancedProgrammingLanguageDesign
"[OO is not] just a fancy way of presenting abstract data types...[it has] developed the concept of abstract data type into a new form of programming."
"First, object-oriented programming provides a new view of types. The type of an object is the protocol it accepts. Two objects are type-compatible if they respond to the same set of messages..."
"Second, the nature of instantiation distinguishes a class from an abstract data type exported from another module. Each instance is independent, with its own data and procedures, although all instances may share common class variables. Data types exported from a module may be instantiated, but the exporting module itself cannot be..."
"Third, the hierarchy of subclasses leads to a style of programming known as programming by classification. The abstract data types are organized into a tree, with the most abstract at the root and the most specified at the leaves. Incremental modifications to a program are accomplished by introducing new subclasses of existing classes..."
pp 192-193
See also WhatAreTypes, OoLacksMathArgument