# Towards Understanding Generics

@article{AbdelGawad2016TowardsUG, title={Towards Understanding Generics}, author={Moez A. AbdelGawad}, journal={ArXiv}, year={2016}, volume={abs/1605.01480} }

This article reports on steps towards building a simple and accurate domain-theoretic model of generic nominally-typed OOP.

#### Topics from this paper

#### 10 Citations

Category Theory for Modeling OOP

- Computer Science, Mathematics
- ArXiv
- 2017

An outline and summary of four new applications of category theory to OOP research are presented.

Partial Cartesian Graph Product (and its use in modeling Java subtyping)

- 2018

In this paper we define a new product-like binary operation on directed graphs, and we discuss some of its properties. We also briefly discuss its application in constructing the subtyping relation… Expand

Novel Uses of Category Theory in Modeling OOP

- Computer Science
- 2017

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 Accurate Mathematical Model of Generic Nominally-Typed OOP

- Computer Science
- ArXiv
- 2016

The concepts of `nominal intervals' and `full generication' are presented that are likely to help in building GNOOP as an accurate mathematical model of generic nominally-typed OOP. Expand

Partial Cartesian Graph Product

- Computer Science, Mathematics
- ArXiv
- 2018

A new product-like binary operation on directed graphs is defined, and some of its properties are discussed, and its application in constructing the subtyping relation in generic nominally-typed object-oriented programming languages is discussed. Expand

Java Generics: An Order-Theoretic Approach (Abridged Outline)

- Computer Science
- ArXiv
- 2019

This short paper presents the outline of a novel order-theoretic approach to modeling generics, in which some concepts and tools from category theory are elementarily used. Expand

Why Nominal-Typing Matters in Object-Oriented Programming

- Computer Science
- ArXiv
- 2016

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

Java Subtyping as an Infinite Self-Similar Partial Graph Product

- Computer Science
- ArXiv
- 2018

This paper presents how the subtyping relation between ground Java types can be precisely constructed using a binary operation on directed graphs, based in particular on that of the standard Cartesian graph product. Expand

Why Nominal-Typing Matters in Mainstream OOP

- 2016

In 1990, Cook et al. shocked the programming languages (PL) research community by declaring that, in object-oriented programming, ‘inheritance is not subtyping,’ meaning there is no one-to-one… Expand

Subtyping in Java with Generics and Wildcards is a Fractal

- Computer Science, Mathematics
- ArXiv
- 2014

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

#### References

SHOWING 1-10 OF 20 REFERENCES

A Comparison of NOOP to Structural Domain-Theoretic Models of Object-Oriented Programming

- Computer Science
- ArXiv
- 2016

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

- Computer Science
- ISDT
- 2013

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

Why Nominal-Typing Matters in OOP

- Computer Science
- 2016

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

NOOP: A Nominal Mathematical Model of Object-Oriented Programming

- Computer Science
- 2013

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

On Variance-Based Subtyping for Parametric Types

- Computer Science
- ECOOP
- 2002

We develop the mechanism of variant parametric types, inspired by structural virtual types by Thorup and Torgersen, as a means to enhance synergy between parametric and inclusive polymorphism in… Expand

Domain Theory for Modeling OOP: A Summary

- Computer Science
- ArXiv
- 2014

The definitions of basic domain theoretic notions and domain constructors used in the construction of NOOP are presented, and a simple structural model of OOP called COOP is presented as a step towards the constructionof NOOP. Expand

A first-class approach to genericity

- OOPSLA
- 2003

This paper describes how to add first-class generic types---including mixins---to strongly-typed OO languages with nominal subtyping such as Java and C# and develops a practical implementation strategy for this extension that can be added to the existing Java language without any change to the underlying Java Virtual Machine. Expand

Inheritance Is Subtyping

- 2013

Since Luca Cardelli wrote a seminal paper [3] on the semantics of inheritance in 1984, programming language researchers have constructed a variety of structural models of object-oriented programming… Expand

Adding wildcards to the Java programming language

- Computer Science
- SAC '04
- 2004

By means of a novel notion of wildcard capture, polymorphic methods can be used to give symbolic names to unspecified types, in a manner similar to the "open" construct known from existential types, allowing for an improved type inference scheme for polymorphic method calls. Expand

Featherweight Java: a minimal core calculus for Java and GJ

- Computer Science
- OOPSLA '99
- 1999

A proof of type safety for Featherweight Java illustrates many of the interesting features of a safety proof for the full language, while remaining pleasingly compact. Expand