Corpus ID: 18334807

An Overview of Nominal-Typing versus Structural-Typing in Object-Oriented Programming

@article{AbdelGawad2013AnOO,
  title={An Overview of Nominal-Typing versus Structural-Typing in Object-Oriented Programming},
  author={Moez A. AbdelGawad},
  journal={ArXiv},
  year={2013},
  volume={abs/1309.2348}
}
This report gives an overview of the main notions in object-oriented programming (OOP) relevant to constructing a mathematical model of nominally-typed OOP such as NOOP. The emphasis in this report is on defining nominality, nominal typing and nominal subtyping of nominally-typed mainstream OO languages, and on contrasting the three notions with their counterparts in structurally-typed OO languages, i.e., with structurality, structural typing and structural subtyping, respectively. 
A Comparison of NOOP to Structural Domain-Theoretic Models of Object-Oriented Programming
TLDR
This paper compares NOOP to the most widely known domain-theoretic models of OOP, namely, the models developed by Cardelli and Cook, which were structurally-typed models. Expand
A Domain-Theoretic Model Of Nominally-Typed Object-Oriented Programming
TLDR
The construction of NOOP is summarized, in full agreement with intuitions of OO developers using these languages, and contrary to the belief that ''inheritance is not subtyping'', which came from assuming non-nominal structural models ofOO type systems. Expand
A Comparison of NOOP to Structural Domain-Theoretic Models of OOP
TLDR
This paper compares NOOP to the most widely known domain-theoretic models of OOP, namely, the models developed by Cardelli and Cook, which were structurally-typed models. Expand
NOOP: A Domain-Theoretic Model of Nominally-Typed OOP
TLDR
The construction of NOOP is presented as the first domain-theoretic model of OOP that includes full class/type names information found in nominally-typed OOP, proving that type inheritance and subtyping are completely identified in these languages. Expand
Why Nominal-Typing Matters in Object-Oriented Programming
TLDR
These comparisons provide a clear and deep account for the relation between nominal and structural OO type systems that has not been presented before, and they help demonstrate the key value of nominal typing and nominal subtyping to OO developers and language designers. Expand
Novel Uses of Category Theory in Modeling OOP
TLDR
Four new potential applications of category theory to OOP research are presented and the use of operads to model Java subtyping, Yoneda's lemma, representable functors and adjoint functors are used. Expand
Towards an Order and Category Theoretic Model of Java Generics (extended version)
TLDR
An order-theoretic and latticetheoretic approach to modeling generics in nominally-typed OOP type systems that aims to build a simpler and more intuitive model than the extant “existentials-based” model. Expand
Verified programming with explicit coercions
TLDR
A design of explicitly proving the local correctness of type-transformations in the presence of accumulated constraints can form the basis of a flexible language in concert with a variety of trusted solver. Expand
Formal foundations for GADTs in Scala
GADTs are a very useful language feature that allow encoding some invariants in types. GADT reasoning is currently implemented in Scala and Dotty, but it’s plagued with soundness issues. To get aExpand
Subtyping in Java is a Fractal
TLDR
The fractal observation may help OO software developers keep a useful and intuitive mental image of their software's subtyping relation, even if it is a little more frightening, and more amazing one than before. Expand
...
1
2
...

References

SHOWING 1-10 OF 19 REFERENCES
A Domain-Theoretic Model Of Nominally-Typed Object-Oriented Programming
TLDR
The construction of NOOP is summarized, in full agreement with intuitions of OO developers using these languages, and contrary to the belief that ''inheritance is not subtyping'', which came from assuming non-nominal structural models ofOO type systems. Expand
NOOP: A Nominal Mathematical Model of Object-Oriented Programming
TLDR
The construction of NOOP is presented as the first domain-theoretic model of OOP to include nominal information found in nominally-typed mainstream OO software, proving that inheritance and subtyping are completely identified in these languages. Expand
PolyTOIL: A type-safe polymorphic object-oriented language
TLDR
The design of PolyTOIL is based on a careful formal definition of type-checking rules and semantics, and a proof of type safety is obtained with the aid of a subject reduction theorem. Expand
A Theory of Type Polymorphism in Programming
  • R. Milner
  • Computer Science
  • J. Comput. Syst. Sci.
  • 1978
TLDR
This work presents a formal type discipline for polymorphic procedures in the context of a simple programming language, and a compile time type-checking algorithm w which enforces the discipline. Expand
Types and programming languages
TLDR
This text provides a comprehensive introduction both to type systems in computer science and to the basic theory of programming languages, with a variety of approaches to modeling the features of object-oriented languages. Expand
Strongtalk: typechecking Smalltalk in a production environment
TLDR
Strongtalk TM is a typechecker for a downwardcompatible Smalltalk dialect that incorporates a strong, modern structural type system and deals with the more dicult issue of separating inheritance and subtyping using the notion of inherited types to preserve encapsulation. Expand
The design of a class mechanism for Moby
TLDR
This paper relies on a rich ML-style module system to provide features such as visibility control and parameterization, while providing a minimal class mechanism that includes only those features needed to support inheritance. Expand
The Java Language Specification
TLDR
The Java Language Specification, Second Edition is the definitive technical reference for the Java programming language and provides complete, accurate, and detailed coverage of the syntax and semantics of the Java language. Expand
NOOP: A domain-theoretic model of nominally-typed object-oriented programming
  • NOOP: A domain-theoretic model of nominally-typed object-oriented programming
  • 2014
NOOP: A domain-theoretic model of nominally-typed object-oriented programming
  • Submitted for publication,
  • 2014
...
1
2
...