A place listing references to the definition of Types (rather than discussion). -- ChanningWalton ---- See http://www.jot.fm/issues/issue_2002_05/column5 : ... Over the series, we shall seek to find answers to questions such as: What is the difference between a type and a class? What do we mean by the the notion of plug-in compatibility? What is the difference between subtyping and subclassing? Can we explain inheritance, method combination and template instantiation? Along the way, we shall survey a number of different historical approaches, such as subtyping, F-bounds, matching and state machines and seek to show how these models explain the differences in the behaviour of popular object-oriented languages such as Java, C++, Smalltalk and Eiffel. The series is titled "The Theory of Classification", because we believe that all of these concepts can be united in a single theoretical model, demonstrating that the object-oriented notion of class is a first-class mathematical concept! It hardly fits its billing of being "aimed specifically at non-theoreticians". Then again, it took a few decades to put DrCodd's ideas into plain English. ''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.) * But that's an operational definition of "well-defined" as it pertains to types, not a definition of "type" ---- '''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 ---- CategoryLanguageTyping