School of Computing

First-class polymorphism for ML

Stefan Kahrs

In Donald Sannella, editor, Programming Languages and Systems - ESOP'94, volume 788 of Lecture Notes in Computer Science, pages 182-196. Springer, April 1994.

Abstract

Polymorphism in ML is implicit: type variables are silently introduced and eliminated. The lack of an explicit declaration of type variables restricts the expressiveness of parameterised modules (functors). Certain polymorphic functions cannot be expressed as functors, because implicit type parameters of polymorphic functions are in one respect more powerful than formal type parameters of functors.

The title suggests that this lack of expressiveness is due to a restricted ability to abstract --- polymorphism is restricted. Type variables can only be abstracted from value declarations, but not from other forms of declarations, especially not from structure declarations.

The paper shows in the case of Standard ML how (syntax and) semantics can be modified to fill this language gap. This is not so much a question of programming language design as a contribution for better understanding the relationship between polymorphic functions, polymorphic types, and functors.

Download publication 68 kbytes

Bibtex Record

@conference{568,
author = {Stefan Kahrs},
title = {First-class polymorphism for {ML}},
month = {April},
year = {1994},
pages = {182-196},
keywords = {determinacy analysis, Craig interpolants},
note = {},
doi = {},
url = {http://www.cs.kent.ac.uk/pubs/1994/568},
    ISBN = {3-540-57880-3},
    booktitle = {Programming Languages and Systems --- ESOP'94},
    editor = {Donald Sannella},
    publisher = {Springer},
    series = {Lecture Notes in Computer Science},
    volume = {788},
}

School of Computing, University of Kent, Canterbury, Kent, CT2 7NF

Enquiries: +44 (0)1227 824180 or contact us.

Last Updated: 21/03/2014