Abstract
We introduce the blame calculus, which adds the notion of blame from Findler and Felleisen’s contracts to a system similar to Siek and Taha’s gradual types and Flanagan’s hybrid types. We characterise where positive and negative blame can arise by decomposing the usual notion of subtype into positive and negative subtypes, and show that these recombine to yield naive subtypes. Naive subtypes previously appeared in type systems that are unsound, but we believe this is the first time naive subtypes play a role in establishing type soundness.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Abadi, M., Cardelli, L., Pierce, B., Plotkin, G.: Dynamic typing in a statically typed language. ACM Trans. Prog. Lang. Syst. 13(2), 237–268 (1991)
Bracha, G.: Pluggable type systems. In: OOPSLA 2004 Workshop on Revival of Dynamic Languages (October 2004)
Findler, R., Blume, M.: Contracts as pairs of projections. In: Hagiya, M., Wadler, P. (eds.) FLOPS 2006. LNCS, vol. 3945, pp. 226–241. Springer, Heidelberg (2006)
Findler, R.B., Felleisen, M.: Contracts for higher-order functions. In: ACM International Conference on Functional Programming (ICFP) (October 2002)
Flanagan, C.: Hybrid type checking. In: ACM Symposium on Principles of Programming Languages (POPL) (Janurary 2006)
Gray, K.E., Findler, R.B., Flatt, M.: Fine-grained interoperability through contracts and mirrors. In: ACM Conference on Object-Oriented Programming: Systems, Languages, and Applications (OOPSLA), pp. 231–246 (2005)
Gronski, J., Flanagan, C.: Unifying hybrid types and contracts. In: Trends in Functional Programming (TFP) (April 2007)
Gronski, J., Knowles, K., Tomb, A., Freund, S.N., Flanagan, C.: Sage: Hybrid checking for flexible specifications. In: Workshop on Scheme and Functional Programming (September 2006)
Henglein, F.: Dynamic typing: Syntax and proof theory. Sci. Comput. Programming 22(3), 197–230 (1994)
Matthews, J., Findler, R.B.: Operational semantics for multi-language programs. In: ACM Symposium on Principles of Programming Languages (POPL) (Janurary 2007)
Meijer, E.: Static typing where possible, dynamic typing where needed. In: OOPSLA 2004 Workshop on Revival of Dynamic Languages (October 2004)
Meyer, B.: Object-Oriented Software Construction. Prentice Hall, Englewood Cliffs (1988)
Ou, X., Tan, G., Mandelbaum, Y., Walker, D.: Dynamic typing with dependent types. In: IFIP International Conference on Theoretical Computer Science (August 2004)
Siek, J., Garcia, R., Taha, W.: Exploring the design space of higher-order casts. In: Castagna, G. (ed.) ESOP 2009. LNCS, vol. 5502, pp. 17–31. Springer, Heidelberg (2009)
Siek, J.G., Taha, W.: Gradual typing for functional languages. In: Workshop on Scheme and Functional Programming (September 2006)
Thatte, S.: Type inference with partial types. In: Lepistö, T., Salomaa, A. (eds.) ICALP 1988. LNCS, vol. 317. Springer, Heidelberg (1988)
Tobin-Hochstadt, S., Felleisen, M.: Interlanguage migration: From scripts to programs. In: Dynamic Languages Symposium (DLS) (2006)
Tobin-Hochstadt, S., Felleisen, M.: The design and implementation of typed scheme. In: ACM Symposium on Principles of Programming Languages (POPL) (2008)
Wadler, P., Findler, R.B.: Well-typed programs can’t be blamed. In: Workshop on Scheme and Functional Programming (September 2007)
Wadler, P., Findler, R.B.: Well-typed programs can’t be blamed. Technical Report TR-2009-01, University of Chicago (2009)
Wright, A.K., Cartwright, R.: A practical soft typing system for Scheme. ACM Trans. Prog. Lang. Syst. 19(1) (1997)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Wadler, P., Findler, R.B. (2009). Well-Typed Programs Can’t Be Blamed. In: Castagna, G. (eds) Programming Languages and Systems. ESOP 2009. Lecture Notes in Computer Science, vol 5502. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-00590-9_1
Download citation
DOI: https://doi.org/10.1007/978-3-642-00590-9_1
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-00589-3
Online ISBN: 978-3-642-00590-9
eBook Packages: Computer ScienceComputer Science (R0)