Dynamic typing in a statically typed language
- 1 April 1991
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 13 (2) , 237-268
- https://doi.org/10.1145/103135.103138
Abstract
Statically typed programming languages allow earlier error checking, better enforcement of diciplined programming styles, and the generation of more efficient object code than languages where all type consistency checks are performed at run time. However, even in statically typed languages, there is often the need to deal with datawhose type cannot be determined at compile time. To handle such situations safely, we propose to add a type Dynamic whose values are pairs of a value v and a type tag T where v has the type denoted by T . Instances of Dynamic are built with an explicit tagging construct and inspected with a type safe typecase construct. This paper explores the syntax, operational semantics, and denotational semantics of a simple language that includes the type Dynamic . We give examples of how dynamically typed values can be used in programming. Then we discuss an operational semantics for our language and obtain a soundness theorem. We present two formulations of the denotational semantics of this language and relate them to the operational semantics. Finally, we consider the implications of polymorphism and some implementation issues.Keywords
This publication has 13 references indexed in Scilit:
- A theory of type polymorphism in programmingPublished by Elsevier ,2003
- Abstract types have existential typeACM Transactions on Programming Languages and Systems, 1988
- Efficient binary I/O of IDL objectsACM SIGPLAN Notices, 1987
- Types and persistence in database programming languagesACM Computing Surveys, 1987
- An ideal model for recursive polymorphic typesInformation and Control, 1986
- Extending Modula-2 to Build Large, Integrated SystemsIEEE Software, 1986
- On understanding types, data abstraction, and polymorphismACM Computing Surveys, 1985
- Implementing remote procedure callsACM Transactions on Computer Systems, 1984
- Call-by-name, call-by-value and the λ-calculusTheoretical Computer Science, 1975
- A formulation of the simple theory of typesThe Journal of Symbolic Logic, 1940