Filters








399 Hits in 3.2 sec

Typing Classes and Mixins with Intersection Types

Jan Bessai, Boris Düdder, Andrej Dudenhefner, Tzu-Chun Chen, Ugo de'Liguoro
2015 Electronic Proceedings in Theoretical Computer Science  
We study an assignment system of intersection types for a lambda-calculus with records and a record-merge operator, where types are preserved both under subject reduction and expansion.  ...  We exhibit some example code, and study its typings in the intersection type system via interpretation into the lambda-calculus with records we have proposed.  ...  [16] , Sec. 2) that with intersection types we can type Y ≡ λ f .  ... 
doi:10.4204/eptcs.177.7 fatcat:txdvaaxilvebdc6f7k6lh22zqm

Mixin Composition Synthesis based on Intersection Types [article]

Jan Bessai, Tzu-Chun Chen, Andrej Dudenhefner, Boris Düdder, Ugo de'Liguoro, Jakob Rehof
2017 arXiv   pre-print
First, recursively defined classes and mixins, which are functions over classes, are expressed as terms in a lambda calculus with records.  ...  The computed result is a class typed by the goal type and generated by a mixin composition applied to an existing class.  ...  Intersection Types for Mixins and Classes 3.1. Intersection and record types. We consider a type-free λ-calculus of extensible records, equipped with a merge operator.  ... 
arXiv:1712.06906v1 fatcat:5br4e3gkcrglzdkkrgrkzm7tam

Typed First-Class Traits

Xuan Bi, Bruno C. D. S. Oliveira, Michael Wagner
2018 European Conference on Object-Oriented Programming  
Many dynamically-typed languages (including JavaScript, Ruby, Python or Racket) support first-class classes, or related concepts such as first-class traits and/or mixins.  ...  To address the challenges of type-checking first-class traits, SEDEL employs a type system based on the recent work on disjoint intersection types and disjoint polymorphism.  ...  First-class classes enable programmers to abstract over patterns in the class hierarchy and to experiment with new forms of OOP such as mixins and traits.  ... 
doi:10.4230/lipics.ecoop.2018.9 dblp:conf/ecoop/BiO18 fatcat:uiujjerdvrgvtlzxn7bqacjimi

Jam - A Smooth Extension of Java with Mixins [chapter]

Davide Ancona, Giovanni Lagorio, Elena Zucca
2000 Lecture Notes in Computer Science  
Moreover, as happens for classes and interfaces, mixin names are reference types, and all the classes obtained instantiating the same mixin are considered subtypes of the corresponding type, hence can  ...  That means, on the design side, that we have faced the challenging problem of integrating the Java overall principles and complex type system with this new notion; on the implementation side, that we have  ...  We warmly thank Sophia Drossopoulou and the anonymous referees for the careful reading and useful suggestions for improving the paper.  ... 
doi:10.1007/3-540-45102-1_8 fatcat:76g3vcxo5nh7zkfdu4fktqb2ty

Scalable component abstractions

Martin Odersky, Matthias Zenger
2005 Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming systems languages and applications - OOPSLA '05  
We identify three programming language abstractions for the construction of re-usable components: abstract type members, explicit selftypes and symmetric mixin composition.  ...  Together, these abstractions enable us to transform an arbitrary assembly of static program parts with hard references between them into a system of re-usable components.  ...  It comes with an explicit self type, which is an intersection type of all classes which are required by Types. Besides Types itself, these classes are Names, Symbols, and Definitions.  ... 
doi:10.1145/1094811.1094815 dblp:conf/oopsla/OderskyZ05 fatcat:agu6ci3yifc5do22rvsb4uppte

Mixin-Based Programming in C++ [chapter]

Yannis Smaragdakis, Don Batory
2001 Lecture Notes in Computer Science  
In particular, research has demonstrated that, using C++ mixin classes, one can express layered component-based designs concisely with efficient implementations.  ...  Combinations of C++ features, like inheritance, templates, and class nesting, allow for the expression of powerful component patterns.  ...  Conclusions We presented some pragmatic issues pertaining to mixin-based programming in C++. We believe that mixin-based techniques are valuable and will become much more widespread in the future.  ... 
doi:10.1007/3-540-44815-2_12 fatcat:24gukgyi2rhbna4x57aftk7atu

Implementing layered designs with mixin layers [chapter]

Yannis Smaragdakis, Don Batory
1998 Lecture Notes in Computer Science  
Mixin layers are similar to abstract subclasses (mixin classes) but scaled to a multiple-class granularity.  ...  We describe mixin layers from a programming language viewpoint, discuss checking the consistency of a mixin layer composition, and analyze the language support issues involved.  ...  A mixin class of [34] can define other mixins that can be composed with it, inherit some mixins when composed, and cancel inherited mixins.  ... 
doi:10.1007/bfb0054107 fatcat:7nrltvqs7fexnhb2c7a2ic2ppm

Jam---designing a Java extension with mixins

Davide Ancona, Giovanni Lagorio, Elena Zucca
2003 ACM Transactions on Programming Languages and Systems  
Moreover, as happens for classes and interfaces, mixin names are reference types, and all the classes obtained by instantiating the same mixin are considered subtypes of the corresponding type, and hence  ...  That means, on the design side, that we have faced the challenging problem of integrating the Java overall principles and complex type system with this new notion; on the implementation side, it means  ...  types.5 We will call mixin instance a class obtained by instantiating a mixin, not to be confused with an instance of a class.  ... 
doi:10.1145/937563.937567 fatcat:3cj3opzlengkrllodzgc4zye7e

Competing Inheritance Paths in Dependent Type Theory: A Case Study in Functional Analysis [chapter]

Reynald Affeldt, Cyril Cohen, Marie Kerjean, Assia Mahboubi, Damien Rouhling, Kazuhiko Sakaguchi
2020 Lecture Notes in Computer Science  
This paper discusses the design of a hierarchy of structures which combine linear algebra with concepts related to limits, like topology and norms, in dependent type theory.  ...  We present and discuss a solution, coined forgetful inheritance, based on packed classes and unification hints.  ...  We also thank Arthur Charguéraud and all the anonymous reviewers for their comments on the successive versions of this paper.  ... 
doi:10.1007/978-3-030-51054-1_1 fatcat:rvql27s6sjfhhhxjsqumccoaza

Eliminating distinctions of class

DeLesley Hutchins
2006 Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications - OOPSLA '06  
We prove that prototypes are type-safe but undecidable, and briefly outline a decidable semi-algorithm for dealing with them.  ...  Nevertheless, it has proved difficult to design static type systems for virtual classes, because virtual classes introduce dependent types.  ...  Acknowlegements We would like to acknowledge the help of Phil Wadler and Don Batory, who provided comments and discussion on earlier drafts of this paper.  ... 
doi:10.1145/1167473.1167475 dblp:conf/oopsla/Hutchins06 fatcat:ov6ethsekna5dfgh2hcidcfbwy

Mixin layers: an object-oriented implementation technique for refinements and collaboration-based designs

Yannis Smaragdakis, Don Batory
2002 ACM Transactions on Software Engineering and Methodology  
We present a specific expression of large-scale refinements called mixin layers, and demonstrate how it overcomes the scalability difficulties that plagued prior work.  ...  A "refinement" is a functionality addition to a software project that can affect multiple dispersed implementation entities (functions, classes, etc.).  ...  The intersection of a class and a collaboration in Figure 2 represents the role prescribed for that class by the collaboration.  ... 
doi:10.1145/505145.505148 fatcat:dz74wv2xcjhjvl6ukxhe4u4jym

Disjoint Polymorphism [chapter]

João Alpuim, Bruno C. d. S. Oliveira, Zhiyuan Shi
2017 Lecture Notes in Computer Science  
This paper presents F i : a calculus with disjoint intersection types, a variant of parametric polymorphism and a merge operator. F i is both typesafe and coherent.  ...  how F i provides basic support for dynamic mixins and various operations on polymorphic extensible records.  ...  Two classes Person and ConsoleLogger are also defined. Two instances of those classes are then composed in a variable jim with the type of the intersection of both using extend.  ... 
doi:10.1007/978-3-662-54434-1_1 fatcat:tr5w7zt5bjdzzfk2yuzftpjhn4

Reusable Graph Transformation Templates [chapter]

Juan de Lara, Esther Guerra
2012 Lecture Notes in Computer Science  
In particular, we propose the definition and instantiation of graph transformation templates whose requirements from generic types are specified through so-called concepts, as well as mixin layers that  ...  extend meta-models with the extra auxiliary elements needed by templates.  ...  Work funded by the Spanish Ministry of Science (projects TIN2008-02081 and TIN2011-24139) and the Region of Madrid (project S2009/TIC-1650).  ... 
doi:10.1007/978-3-642-34176-2_5 fatcat:xxhidgq4mjeirc3eqrtqucqzfm

Overriding operators in a mixin-based framework [chapter]

Davide Ancona, Elena Zucca
1997 Lecture Notes in Computer Science  
Our analysis and results are not bound to a particular language, since they are formulated within an algebraic framework for mixin modules which can be instantiated over di erent core languages. ( in Bonus  ...  We show that many di erent overriding operators present in programming languages can be expressed, adopting a mixin-based framework, in terms of three basic operators.  ...  for instantiation only when combined with some other class.  ... 
doi:10.1007/bfb0033836 fatcat:dp3uoeu2evf4pdzehdhfbextde

Scalable component abstractions

Martin Odersky, Matthias Zenger
2005 SIGPLAN notices  
We identify three programming language abstractions for the construction of reusable components: abstract type members, explicit selftypes, and modular mixin composition.  ...  Together, these abstractions enable us to transform an arbitrary assembly of static program parts with hard references between them into a system of reusable components.  ...  It comes with an explicit selftype, which is an intersection type of all classes required by Types. Besides Types itself, these classes are Names, Symbols, and Definitions.  ... 
doi:10.1145/1103845.1094815 fatcat:eotba5bbyzcvlf34elfen5oqom
« Previous Showing results 1 — 15 out of 399 results