% $Id$

% 1970s and older references on datatypes, type theory, etc.

@InProceedings{Atkinson-Liskov-Scheifler78,
  Author =	 "Russell R. Atkinson and Barbara H. Liskov and Robert
                  W. Scheifler",
  Title =	 "Aspects of Implementing {CLU}",
  Booktitle =	 "Proceedings of the ACM 1978 Annual Conference",
  Organization = ACM,
  Pages =	 "123-129",
  Year =	 1978,
  Annote =	 "Basics of implementing exception handling,
                  iterators, and parameterized types in CLU. 9
                  references."
}

@TechReport{Bloom76,
  Author =	 "Toby Bloom",
  Title =	 "Immutable Groupings",
  Month =	 aug,
  Year =	 1978,
  Number =	 61,
  Type =	 "CLU Design Note",
  Institution =	 MITLCS,
  Annote =	 "Discusses adding immutable groupings to CLU. Gives a
                  proposal for sequences and structures."
}

@Book{BrinchHansen77,
  Title =	 "The Architecture of Concurrent Programs",
  Author =	 "Per Brinch Hansen",
  Publisher =	 "Prentice-Hall",
  Address =	 "Englewood Cliffs, N.J.",
  Year =	 1977,
  Annote =	 "The programming language Concurrent Pascal is
                  described. It integrates abstract data types and
                  monitors. 43 references."
}

@InCollection{Dahl-Hoare72,
  Author =	 "Ole-Johan Dahl and C. A. R. Hoare",
  Title =	 "Hierarchical Program Structures",
  BookTitle =	 "Structured Programming",
  Publisher =	 "Academic Press, Inc.",
  Address =	 NY,
  Year =	 1972,
  Pages =	 "175-220",
  Annote =	 "Uses SIMULA 67 for examples. 12 references."
}

@InProceedings{Demers-Donahue-Skinner78,
  Author =	 "Alan Demers and James Donahue and Glenn Skinner",
  Title =	 "Data Types as Values: Polymorphism, Type-checking,
                  Encapsulation",
  Pages =	 "23-30",
  Booktitle =	 "Conference Record of the Fifth Annual ACM Symposium
                  on Principles of Programming Languages, Tucson,
                  Arizona",
  Organization = ACM,
  Month =	 jan,
  Year =	 1978,
  Annote =	 "View of what a data type is in Russell. Polymorphism
                  handled by types as
                  values. Representation-independent semantics. 20
                  references."
}

@Article{Donahue79,
  Author =	 "James Donahue",
  Title =	 "On the Semantics of 'Data Type'",
  Journal =	 SIAMJC,
  Year =	 1979,
  Volume =	 8,
  Number =	 4,
  Month =	 nov,
  Pages =	 "546-560",
  Annote =	 "Informal and formal treatments of the meaning of
                  'data type'. Meaning of 'strongly
                  typed'. Application to the typed lambda
                  calculus. Representation independence. 22
                  references."
}

@TechReport{Flon74,
  Author =	 "Lawrence Flon",
  Title =	 "A Survey of Some Issues Concerning Abstract Data
                  Types",
  Institution =	 CMU,
  Year =	 1974,
  Month =	 sep
}

@Article{Gannon77,
  Author =	 "J. D. Gannon",
  Title =	 "An Experimental Evaluation of Data Type Conventions",
  Journal =	 CACM,
  Year =	 1977,
  Volume =	 20,
  Number =	 8,
  Month =	 aug,
  Pages =	 "584-595",
  Annote =	 "An experiment attempting to show that type systems
                  help programmers is described. Concludes that static
                  type checking increases programming reliability, but
                  redundancy may not be as big a help as the functions
                  that come with built-in types. 10 references."
}

@Article{Geschke-Morris-Satterwaite77,
  Author =	 "Charles M. Geschke and Morris, Jr., James H. and
                  Edwin H. Satterwaite",
  Title =	 "Early Experience with MESA",
  Journal =	 CACM,
  Year =	 1977,
  Volume =	 20,
  Number =	 8,
  Month =	 aug,
  Pages =	 "540-553",
  Annote =	 "Overview of modules and types in MESA. 14
                  references."
}

@Article{Gries-Gehani77,
  Author =	 "David Gries and Narain Gehani",
  Title =	 "Some Ideas on Data Types in High-Level Languages",
  Journal =	 CACM,
  Year =	 1977,
  Volume =	 20,
  Number =	 6,
  Month =	 jun,
  Pages =	 "414-420",
  Annote =	 "Parameterized type definitions and their
                  problems. Iteration, domains of arrays as
                  types. Argues for explicit conversions only between
                  types. Pathological examples of costs of
                  parameterization. 17 references."
}

@TechReport{Jones-Liskov76a,
  Author =	 "Anita K. Jones and Barbara H. Liskov",
  Title =	 "An Access Control Facility for Programming
                  Languages",
  Institution =	 MITLCS,
  Type =	 "Computation Structures Group Memo",
  Number =	 137,
  Month =	 apr,
  Year =	 1976,
  Annote =	 "Includes a comparision with Hydra. 13 references."
}

@Article{Jones-Liskov76b,
  Author =	 "Anita K. Jones and Barbara H. Liskov",
  Title =	 "A Language Extension for Controlling Access to
                  Shared Data",
  Journal =	 IEEESE,
  Volume =	 "SE-2",
  Number =	 4,
  Month =	 dec,
  Year =	 1976,
  Pages =	 "277-285",
  Annote =	 "An earlier version of the CACM paper. 12
                  references."
}

@Article{Jones-Liskov78,
  Author =	 "Anita K. Jones and Barbara H. Liskov",
  Title =	 "A Language Extension for Expressing Constraints on
                  Data Access",
  Journal =	 CACM,
  Volume =	 21,
  Number =	 5,
  Pages =	 "358-367",
  Year =	 1978,
  Month =	 may,
  Annote =	 "Extensions to programming languages to provide
                  controlled sharing. 17 references."
}

@TechReport{Lampson-etal81,
  Author =	 "Butler W. Lampson and James L. Horning and Ralph
                  L. London and James G. Mitchell and Gerald J. Popek",
  Title =	 "Report on the Programming Language {Euclid}",
  Institution =	 "Xerox Palo Alto Research Centers",
  Year =	 1981,
  Month =	 oct,
  Number =	 "CSL-81-12",
  Note =	 "Also {\em SIGPLAN Notices}, 12(2), February, 1977.",
  Annote =	 "23 references."
}

@Article{Linden76,
  Author =	 "T. A. Linden",
  Title =	 "The Use of Abstract Data Types to Simplify Program
                  Modifications",
  Year =	 1976,
  Month =	 feb,
  Journal =	 SIGPLAN,
  Volume =	 8,
  Number =	 2,
  Pages =	 "12-23",
  Note =	 "Conference on Data: Abstraction, Definition and
                  Structure"
}

@Article{Liskov-Zilles74,
  Author =	 "Barbara Liskov and Stephen Zilles",
  Title =	 "Programming with Abstract Data Types",
  Journal =	 SIGPLAN,
  Year =	 1974,
  Volume =	 9,
  Number =	 4,
  Month =	 apr,
  Pages =	 "50-59",
  Note =	 "Proceedings of a Symposium on Very High Level
                  Languages",
  Annote =	 "Rationale for abstract data types as in CLU. 13
                  references."
}

@Article{Liskov-etal77,
  Author =	 "Barbara Liskov and Alan Snyder and Russell Atkinson
                  and Craig Schaffert",
  Title =	 "Abstraction Mechanisms in {CLU}",
  Journal =	 CACM,
  Year =	 1977,
  Volume =	 20,
  Number =	 8,
  Month =	 aug,
  Pages =	 "564-576",
  Annote =	 "Describes procedural, control and data abstraction
                  mechanisms in CLU. Example programs. Describes the
                  CLU library. 24 references."
}

@TechReport{Liskov75a,
  Author =	 "Barbara Liskov",
  Title =	 "Multiple Implementations of a Type",
  Institution =	 "Massachusetts Institute of Technology, Project MAC",
  Year =	 1975,
  Type =	 "CLU Design Note",
  Number =	 53,
  Annote =	 "Discusses multiple implementations and considers the
                  following approaches: 1. unions of all
                  implementations, 2. abstract representations which
                  avoids quadratic number of conversion functions,
                  3. limiting the scope of implementations."
}

@InCollection{Martin-Lof75a,
  Author =	 {Per Martin-L\"{o}f},
  Title =	 "About Models for Intuitionistic Type Theories and
                  the Notion of Definitional Equality",
  Publisher =	 "North-Holland",
  Address =	 NY,
  Editor =	 "S. Kanger",
  BookTitle =	 "3rd Scandinavian Logic Symp.",
  Year =	 1975,
  Pages =	 "81-109"
}

@InCollection{Martin-Lof75b,
  Author =	 {P. Martin-L\"{o}f},
  Title =	 "An Intuitionistic Theory of Types: Predictive Part",
  Publisher =	 "North-Holland",
  Address =	 NY,
  Editor =	 "H. E. Rose and J. C. Sheperdson",
  Booktitle =	 "Logic Colloquium '73",
  Series =	 "Studies in Logic",
  Volume =	 80,
  Year =	 1975,
  Pages =	 "73-118"
}

@InProceedings{Mealy67,
  Author =	 "G. Mealy",
  Title =	 "Another Look at Data",
  Booktitle =	 "1967 Fall Joint Computer Conference",
  Organization = AFIPS,
  Year =	 1967,
  Volume =	 31,
  Pages =	 "525-534"
}

@Article{Milner78,
  Author =	 "Robin Milner",
  Title =	 "A Theory of Type Polymorphism in Programming",
  Journal =	 JCSS,
  Volume =	 17,
  Number =	 3,
  Month =	 dec,
  Year =	 1978,
  Pages =	 "348-375",
  Annote =	 "Theoretical basis for inference of types of
                  expressions and polymorphism as in ML. 23
                  references."
}

@InCollection{Mitchell-Wegbreit78,
  Author =	 "J. Mitchell and B. Wegbreit",
  Title =	 "Schemes: A High-level Data Structuring Concept",
  Publisher =	 "Prentice-Hall",
  Address =	 "Englewood Cliffs, N.J.",
  Year =	 1978,
  BookTitle =	 "Current Trends in Programming Methodology",
  Volume =	 4,
  Pages =	 "150-184",
  Editor =	 "Raymond T. Yeh",
  Note =	 "Also Xerox PARC CSL-77-01, Jan. 1977.",
  Annote =	 "Requirements for a type system: 1. minimum of
                  run-time overhead, 2. strongly typed, 3. ability to
                  limit access to type implementing routines,
                  4. ability to reuse function names, 5. ability to
                  write polymorphic definitions, 6. ability to add new
                  new qualities to a type in a general way, 7. deal
                  with objects and not just pointers to them,
                  8. should be able to define a set of related types
                  in a single scheme, 9. ability to compose schemes
                  nicely, 10. ability to impose constraints on scheme
                  parameters and 11. ability to define all operations,
                  including assignment, and initialization and
                  finalization. 25 references."
}

@Article{Morris73a,
  Author =	 "Morris, Jr., James H.",
  Title =	 "Protection in Programming Languages",
  Year =	 1973,
  Journal =	 CACM,
  Month =	 jan,
  Volume =	 16,
  Number =	 1,
  Pages =	 "15-21",
  Annote =	 "Seal and unseal functions provide type
                  safety. Invariants can be maintained and properties
                  verified from small parts of the text when types
                  encapsulated. Idea of type protecting an
                  invariant. Trademarks allow loosening of type system
                  and can be used to model hierarchical types and
                  polymorphic types. Can use scope rules to enforce
                  protection. 7 references."
}

@InProceedings{Morris73b,
  Author =	 "Morris, Jr., James H.",
  Publisher =	 ACM,
  Title =	 "Types are not sets",
  BookTitle =	 "Conference Record of ACM Symposium on Principles of
                  Programming Languages, Boston, Mass.",
  Month =	 oct,
  Year =	 1973,
  Pages =	 "120-124",
  Annote =	 "Authentication and secrecy in type checking. 6
                  references."
}

@InCollection{Morris74,
  Title =	 "Towards More Flexible Type Systems",
  Author =	 "Morris, Jr., James H.",
  Publisher =	 SV,
  Address =	 NY,
  Booktitle =	 "Programming Symposium, Proceedings, Colloque sur la
                  Programmation, Paris, April 1974",
  Series =	 LNCS,
  Editor =	 "B. Robinet",
  Volume =	 19,
  Year =	 1974,
  Pages =	 "377-384",
  Annote =	 "Consideration of extensions to type systems and
                  motivation for them. 4 references."
}

@MastersThesis{Moss78,
  Author =	 "John Eliot Bakerslee Moss",
  Title =	 "Abstract Data Types in Stack Based Languages",
  School =	 MIT,
  Month =	 feb,
  Year =	 1978,
  Note =	 "MIT/LCS/TR-190",
  Annote =	 "Doing object-oriented, CLU style abstraction in a
                  stack-based language. 22 references."
}

@Article{Parnas-Shore-Weiss76,
  Author =	 "D. L. Parnas and John E. Shore and David Weiss",
  Title =	 "Abstract Types Defined as Classes of Variables",
  Journal =	 SIGPLAN,
  Volume =	 8,
  Number =	 2,
  Month =	 feb,
  Year =	 1976,
  Pages =	 "149-154",
  Note =	 "Proceedings of Conference on Data: Abstraction,
                  Definition and Structure",
  Annote =	 "16 references."
}

@Article{Popek-etal77,
  Author =	 "G. J. Popek and J. J. Horning and B. W. Lampson and
                  J. G. Mitchell and R. L. London",
  Title =	 "Notes on the Design of {Euclid}",
  Journal =	 SIGPLAN,
  Volume =	 12,
  Number =	 3,
  Month =	 mar,
  Year =	 1977,
  Pages =	 "11-18",
  Note =	 "Proceedings of an ACM Conference on Language Design
                  for Reliable Software, Raliegh, North Carolina,
                  March, 1977.",
  Annote =	 "Overview of Euclid's goals and mechanisms including
                  the type system. 35 references."
}

@InCollection{Reynolds74,
  Author =	 "J. C. Reynolds",
  Title =	 "Towards a Theory of Type Structure",
  Publisher =	 SV,
  Address =	 NY,
  Booktitle =	 "Programming Symposium, Proceedings, Colloque sur la
                  Programmation, Paris, April 1974",
  Series =	 LNCS,
  Volume =	 19,
  Year =	 1974,
  Pages =	 "408-425",
  Annote =	 "Extension of typed lambda calculus to user-defined
                  types and polymorphic functions. 14 references."
}

@InCollection{Reynolds75,
  Author =	 "J. C. Reynolds",
  Title =	 "User-defined Types and Procedural Data Structures as
                  Complementary Approaches to Type Abstraction",
  Booktitle =	 "New Directions in Algorithmic Languages",
  Organization = "IFIP Working Group 2.1",
  Year =	 1975,
  Editor =	 "S. A. Schuman",
  Publisher =	 IRIA,
  Address =	 "Rocquencourt",
  Pages =	 "157-168"
}

@InCollection{Reynolds78,
  Author =	 "John C. Reynolds",
  Title =	 "User Defined Types and Procedural Data Structures as
                  Complementary Approaches to Data Abstraction",
  BookTitle =	 "Programming Methodology, A Collection of Articles by
                  IFIP WG2.3",
  Publisher =	 SV,
  Address =	 NY,
  Editor =	 "David Gries",
  Year =	 1978,
  Pages =	 "309-317",
  Note =	 "Reprinted from S. A. Schuman (ed.), {\em New
                  Directions in Algorithmic Languages 1975}, Inst. de
                  Recherche d'Informatique et d'Automatique,
                  Rocquencourt, 1975, pages 157-168",
  Annote =	 "User defined types are as in CLU, with a data
                  structure and some operations that manipulate
                  it. Procedural data structures represent data as
                  procedure closures. 14 references."
}

@Article{Robinson65,
  author = 	 {J. A. Robinson},
  title = 	 {A machine oriented logic based on the resolution principle},
  journal = 	 JACM,
  year = 	 1965,
  volume =	 12,
  number =	 1,
  pages =	 {23-41}
}

@TechReport{Schaffert75a,
  Author =	 "Craig Schaffert",
  Title =	 "Immutable Groupings",
  Institution =	 "Massachusetts Institute of Technology, Project MAC",
  Year =	 1975,
  Month =	 apr,
  Type =	 "CLU Design Note",
  Number =	 47,
  Annote =	 "Discussion of immutable records and arrays in
                  CLU. Reasons for adding them are readability and
                  verification."
}

@TechReport{Schaffert75b,
  Author =	 "J. Craig Schaffert",
  Title =	 "Types as Objects",
  Institution =	 "Massachusetts Institute of Technology, Project MAC",
  Year =	 1975,
  Month =	 apr,
  Type =	 "CLU Design Note",
  Number =	 49,
  Annote =	 "Types are objects which can be queried about their
                  operations, etc."
}

@TechReport{Scheifler79,
  Author =	 "Bob Scheifler",
  Title =	 "Type Parameters and Infinite Recursion Revisited",
  Institution =	 MITLCS,
  Year =	 1979,
  Month =	 jul,
  Type =	 "CLU Design Note",
  Number =	 77,
  Annote =	 "By making type parameters with parameterized
                  operations write out the restrictions on the
                  parameters of their parameterized operations, type
                  checking recursion is converted into textual
                  recursion and thus there are no problems with
                  infinite recursion. 1 reference."
}

@Article{Scott76,
  Author =	 "Dana Scott",
  Title =	 "Data Types as Lattices",
  Journal =	 SIAMJC,
  Volume =	 5,
  Number =	 3,
  Month =	 sep,
  Year =	 1976,
  Pages =	 "522-587",
  Annote =	 "Theoretical treatment of data types. 253
                  references."
}

@InCollection{Shamir-Wadge77,
  Author =	 "Adi Shamir and William W. Wadge",
  Title =	 "Data Types as Objects",
  Publisher =	 SV,
  Address =	 NY,
  Booktitle =	 "Automata, Languages and Programming, Forth
                  Colloquium, University of Turku",
  Series =	 LNCS,
  Volume =	 52,
  Year =	 1977,
  Pages =	 "465-479",
  Annote =	 "Types in the domain of data objects, multiple
                  inheritance. 4 references."
}

@Article{Shaw-Wulf-London77,
  Author =	 "Mary Shaw and William A. Wulf and R. L. London",
  Title =	 "Abstraction and Verification in {Alphard}: Defining
                  and Specifying Iteration and Generators",
  Journal =	 CACM,
  Volume =	 20,
  Number =	 8,
  Month =	 aug,
  Year =	 1977,
  Pages =	 "553-564",
  Annote =	 "Description of Alphard 'forms'. Specification and
                  verification techniques. 17 references."
}

@TechReport{Snyder76a,
  Author =	 "Alan Snyder",
  Title =	 "Extended Unions",
  Institution =	 MITLCS,
  Year =	 1976,
  Month =	 mar,
  Type =	 "CLU Design Note",
  Number =	 57,
  Annote =	 "Proposal for property specified unions."
}

@TechReport{Snyder76b,
  Author =	 "Alan Snyder",
  Title =	 "Alternatives to Extended Unions",
  Institution =	 MITLCS,
  Year =	 1976,
  Month =	 mar,
  Type =	 "CLU Design Note",
  Number =	 58,
  Annote =	 "Type expressions, renaming of
                  operations. Hierarchies of related types. 1
                  reference."
}

@Article{Tennent77a,
  Author =	 "R. D. Tennent",
  Title =	 "On a New Approach to Representation-Independent Data
                  Classes",
  Journal =	 "Acta Informatica",
  Volume =	 8,
  Number =	 4,
  Pages =	 "315-324",
  Year =	 1977,
  Annote =	 "Discusses parameterization and access to operations
                  of a type. 24 references."
}

@Article{Tennent78,
  Author =	 "R. Tennent",
  Title =	 "Another Look at Type Compatibility in Pascal",
  Journal =	 SPandE,
  Volume =	 8,
  Number =	 4,
  Month =	 "July-August",
  Pages =	 "429-437",
  Year =	 1978,
  Annote =	 "Structural versus name equivalence in Pascal. 14
                  references."
}

@Article{Wegbreit74,
  Title =	 "The Treatment of Data Types in {EL1}",
  Author =	 "Ben Wegbreit",
  Journal =	 CACM,
  Volume =	 17,
  Number =	 5,
  Month =	 may,
  Pages =	 "251-264",
  Year =	 1974,
  Annote =	 "Importance of problem-oriented notation and
                  problem-oriented types. Notation should be
                  simultaneously natural and efficient. No pointers to
                  the stack. Mode and routine valued variables. Modes
                  of 'None' and 'any'. Mode valued routines. Mix of
                  compiled and interpreted routines in the
                  system. Precise control over degree of binding. Ad
                  hoc polymorphism, since can find the mode of an
                  argument. Size is not a part of the SEQ mode, uses
                  heap. Can build new modes at run-time. Abstract data
                  types as functions. Implied modes with generic
                  definitions as sugar for the ad hoc style. User
                  control over mode equality, ability to produce new
                  mode not equal to any other. A LOWER routine like
                  'down' in CLU for abstract types. Freezing of type
                  information during compilation for efficiency. 10
                  references."
}

@Article{Wells-Cornwall76,
  Author =	 "M. B. Wells and F. L. Cornwall",
  Title =	 "A Data Type Encapsulation Scheme Utilizing Base
                  Language Operators",
  Year =	 1976,
  Month =	 feb,
  Journal =	 SIGPLAN,
  Volume =	 8,
  Number =	 2,
  Pages =	 "170-178",
  Note =	 "Conference on Data: Abstraction, Definition and
                  Structure"
}

@Book{Wulf-Levin-Harbison81,
  title =	 "Hydra/{C}.mmp: An Experimental Computer System",
  author =	 "W. A. Wulf and R. Levin and P. Harbison",
  publisher =	 "McGraw-Hill",
  Address =	 NY,
  year =	 1981
}

@Article{Wulf-London-Shaw76,
  Author =	 "William A. Wulf and Ralph L. London and Mary Shaw",
  Title =	 "An Introduction to the Construction and Verification
                  of {Alphard} Programs",
  Journal =	 IEEESE,
  Year =	 1976,
  Volume =	 "SE-2",
  Number =	 4,
  Month =	 dec,
  Pages =	 "253-264",
  Annote =	 "Integration of specifications with
                  programs. Requirements on a type parameter can also
                  include specifications. 41 references."
}

@Article{Wulf-etal74,
  author =	 "W. Wulf and E. Cohen and W. Corwin and A. Jones and
                  R. Levin and C. Pierson and F. Pollack",
  title =	 "{HYDRA}: the kernal of a multiprocessor operating
                  system",
  journal =	 CACM,
  volume =	 17,
  number =	 6,
  pages =	 "337--345",
  month =	 jun,
  year =	 1974,
  Annote =	 "9 references."
}

