Abstract
We propose a new method of run-time instance resolution of generic values of extensional polymorphism, a framework for non-parametric polymorphism in the ML language. For each generic value instance, we dispatch a directed integer graph called flow. A flow graph encodes typing witness of a generic value instance, and provides an instruction of selecting one of the overloaded definitions to be evaluated. Thanks to its simple structure, instance resolution is performed much more efficiently than the classical run-time type dispatching.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Abadi, M., Cardelli, L., Pierce, B., Rémy, D.: Dynamic typing in polymorphic languages. In: Proceedings of the 1992 workshop on ML and its applications (1992)
Crary, K., Weirich, S., Gregory Morrisett, J.: Intensional polymorphism in type-erasure semantics. In: International Conference on Functional Programming, pp. 301–312 (1998)
Dubois, C., Rouaix, F., Weis, P.: Extensional polymorphism. In: Proceedings of the 22th ACM Conference on Principles of Programming Languages (January 1995)
Duggan, D., Ophel, J.: Open and closed scopes for constrained genericity, vol. 275, pp. 215–258 (2002)
Hinze, R., Jeuring, J.: Generic Haskell: Practice and theory. In: Summer School on Generic Programming. LNCS, Springer, Heidelberg (2002)
Hudak, P., Jones, S.P., Wadler, P.: Report on the programming language Haskell, version 1.2. Technical report, Yale University (1992)
Jones, M.P., Peterson, J.C.: Hugs 98: A functional programming system based on haskell 98 - user manual (1998)
Leroy, X., Mauny, M.: Dynamics in ML. Journal of Functional Programming 3(4), 431–463 (1994)
Odersky, M., Wadler, P., Wehr, M.: A second look at overloading. In: Functional Programming Languages and Computer Architecture, pp. 135–146 (1995)
Ohori, A.: A polymorphic record calculus and its compilation. ACM Transactions on Programming Languages and Systems 17(6), 844–895 (1995)
Shields, M.B., Peyton Jones, S.L.: First class modules for Haskell. In: 9th International Conference on Foundations of Object-Oriented Languages (FOOL 9), Portland, Oregon, January 2002, pp. 28–40 (2002)
Wright, A.K.: Simple imperative polymorphism. Lisp and Symbolic Computation 8(4), 343–355 (1995)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Furuse, J. (2003). Extensional Polymorphism by Flow Graph Dispatching. In: Ohori, A. (eds) Programming Languages and Systems. APLAS 2003. Lecture Notes in Computer Science, vol 2895. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-40018-9_25
Download citation
DOI: https://doi.org/10.1007/978-3-540-40018-9_25
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-20536-4
Online ISBN: 978-3-540-40018-9
eBook Packages: Springer Book Archive