OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Equal rights for functional objects or, the more things change, the more they are the same
ACM SIGPLAN OOPS Messenger
OOPSLA '04 Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Proceedings of the 5th international conference on Aspect-oriented software development
Finding bugs efficiently with a SAT solver
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Design of a class library for association relationships
LCSD '07 Proceedings of the 2007 Symposium on Library-Centric Software Design
Relationships meet their roles in object oriented programming
FSEN'07 Proceedings of the 2007 international conference on Fundamentals of software engineering
First-class relationships in an object-oriented language
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Declarative object identity using relation types
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
A relational model of object collaborations and its use in reasoning about relationships
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Hi-index | 0.00 |
OO languages typically provide one form of object equality, known as reference equality, where two objects are equal only if they are the same object; two objects which are structurally identical are not considered equal. Thus, programmers who require a more refined notion of equality must define their own operator. Programmer-implemented equality operators tend to rely on informal notions of partial and temporal object immutability which are prone to error. This is a particular problem for objects used in collections which depend on equality. This paper discusses Affinity: an untyped, object-oriented language with a powerful equality operator based on EGAL [2] and support for object-keying and immutability. Affinity is designed to provide coherent and elegant support for object equality, reducing programmer burden and error potential.