Skip to main content

Extensional Polymorphism by Flow Graph Dispatching

  • Conference paper
Programming Languages and Systems (APLAS 2003)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2895))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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)

    Google Scholar 

  2. Crary, K., Weirich, S., Gregory Morrisett, J.: Intensional polymorphism in type-erasure semantics. In: International Conference on Functional Programming, pp. 301–312 (1998)

    Google Scholar 

  3. Dubois, C., Rouaix, F., Weis, P.: Extensional polymorphism. In: Proceedings of the 22th ACM Conference on Principles of Programming Languages (January 1995)

    Google Scholar 

  4. Duggan, D., Ophel, J.: Open and closed scopes for constrained genericity, vol. 275, pp. 215–258 (2002)

    Google Scholar 

  5. Hinze, R., Jeuring, J.: Generic Haskell: Practice and theory. In: Summer School on Generic Programming. LNCS, Springer, Heidelberg (2002)

    Google Scholar 

  6. Hudak, P., Jones, S.P., Wadler, P.: Report on the programming language Haskell, version 1.2. Technical report, Yale University (1992)

    Google Scholar 

  7. Jones, M.P., Peterson, J.C.: Hugs 98: A functional programming system based on haskell 98 - user manual (1998)

    Google Scholar 

  8. Leroy, X., Mauny, M.: Dynamics in ML. Journal of Functional Programming 3(4), 431–463 (1994)

    Article  Google Scholar 

  9. Odersky, M., Wadler, P., Wehr, M.: A second look at overloading. In: Functional Programming Languages and Computer Architecture, pp. 135–146 (1995)

    Google Scholar 

  10. Ohori, A.: A polymorphic record calculus and its compilation. ACM Transactions on Programming Languages and Systems 17(6), 844–895 (1995)

    Article  Google Scholar 

  11. 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)

    Google Scholar 

  12. Wright, A.K.: Simple imperative polymorphism. Lisp and Symbolic Computation 8(4), 343–355 (1995)

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics