Proc. of the thirteenth spring school of the LITP on Combinators and functional programming languages
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dynamic typing in a statically-typed language
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Inheritance and explicit coercion
Proceedings of the Fourth Annual Symposium on Logic in computer science
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dynamic typing in a statically typed language
ACM Transactions on Programming Languages and Systems (TOPLAS)
ESOP'92 Symposium proceedings on 4th European symposium on programming
Dynamic typing: syntax and proof theory
ESOP'92 Selected papers of the symposium on Fourth European symposium on programming
Contracts for higher-order functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
CLU REFERENCE MANUAL
Fine-grained interoperability through mirrors and contracts
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Interlanguage migration: from scripts to programs
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Extending Modula-2 to Build Large, Integrated Systems
IEEE Software
The design and implementation of typed scheme
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ECOOP '07 Proceedings of the 21st European conference on ECOOP 2007: Object-Oriented Programming
Software hardening: a research agenda
Proceedings for the 1st workshop on Script to Program Evolution
Always-available static and dynamic feedback
Proceedings of the 33rd International Conference on Software Engineering
Virtual values for language extension
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
The ins and outs of gradual type inference
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Calculating threesomes, with blame
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Cast insertion strategies for gradually-typed objects
Proceedings of the 9th symposium on Dynamic languages
Tackling the efficiency problem of gradual typing
Proceedings of the 2013 companion publication for conference on Systems, programming, & applications: software for humanity
Hi-index | 0.00 |
How to integrate static and dynamic types? Recent work focuses on casts to mediate between the two. However, adding casts may degrade tail calls into a non-tail calls, increasing space consumption from constant to linear in the depth of calls. We present a new solution to this old problem, based on the notion of a threesome. A cast is specified by a source and a target type--a twosome. Any twosome factors into a downcast from the source to an intermediate type, followed by an upcast from the intermediate to the target---a threesome. Any chain of threesomes collapses to a single threesome, calculated by taking the greatest lower bound of the intermediate types. We augment this solution with blame labels to map any failure of a threesome back to the offending twosome in the source program. Herman, Tomb, and Flanagan (2007) solve the space problem by representing casts with the coercion calculus of Henglein (1994). While they provide a theoretical limit on the space overhead, there remains the practical question of how best to implement coercion reduction. The threesomes presented in this paper provide a streamlined data structure and algorithm for representing and normalizing coercions. Furthermore, threesomes provide a typed-based explanation of coercion reduction.