Value Types in Object-Oriented Programming Languages

B. Ritterbach ritterbach at
Fri Jul 17 16:06:17 UTC 2015

Hello, Valhalla-dev,

I am part of a working group at the University of Hamburg/ Department of 
Informatics. We are working on "Value Types in Object-Oriented 
Programming Languages" since many years, actually, decades. Recently I 
finished my Ph.D. thesis on this subject.
Probably some of the ideas from our working group might contribute to 
value types in Java/ Valhalla?
As a comprehensive summary of our value type concept, here the thesis 
can be downloaded: (sorry 
for the German language).
If anybody is interested in this work, or if you have an questions, 
please feel free to contact me.

As an appetizer and a first impression, here is a sample of some of the 
thesis' essential ideas:

1.)  objects and values as fundamentally different concepts:
The thesis approaches objects and values from a conceptual perspective. 
It distinguishes them based on their behavior, independent of a 
technical implementation: objects are stateful, values are stateless. 
Therefore values differ from objects by restrictions, by the things they 
CANNOT do.  E. g. values cannot be changed, and (from a conceptual point 
of view) they can neither be created nor destroyed, value operations 
cannot produce side effect, etc. (Especially the second restriction - 
uncreatability - is often neglected by many other papers.)

2.)  separation of object types and value types on the language level:
Based on the conceptual differences between objects and values, the 
thesis proposes to support object types and value types on the language 
level by distinct type constructors (objectClass and valueClass). It 
focuses on the design of valueClasses and it describes language rules 
that ensure their value-like behaviour. With this language design, 
arbitrary value classes can be defined by the programmer. ValueClasses 
are coded with the same flexibility as an (object)class, and they behave 
like int in Java.

3.) identity for objects, equality for values:
Equality is an essential operation for valueClasses, just as identity is 
essential for objectClasses. The thesis argues that value equality and 
object identity can be interpreted as the very same logical concept 
(though they are implemented differently) and that a programming 
language should support a single comparison only.

4.) no inheritance for value types:
Based on the conceptual properties of values, it can be shown that for 
valueClasses inheritance does not imply a subtype relation between 
superclass and subclass. This renders inheritance for valueClasses less 
useful and more error-prone. For valueClasses a different mechanism 
(similar to a user-definable widening conversion) can induce a subtype 
Additionally, this setting eliminates some problems of object-oriented 
programming, such as the circle-ellipse-dilemma or the handling of 
binary methods.

5.) values as a closed subsystem:
Object types can use value types, but not vice versa. The value types of 
a system constitute a closed subsystem.


More information about the valhalla-dev mailing list