Practical polymorphism

  • Rishiyur S. Nikhil
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 201)


Polymorphic type systems as proposed by Milner and implemented in the programming language ML offer rich types, unobtrusive compile-time type-checking and complete type-safety in functional languages. However, straightforward addition of such a type system to languages with interactive environments such as FQL, SASL or Scheme can inhibit seriously the top-down, incremental programming style characteristically employed with them. The problems include error-recovery during type-checking, type-checking with incomplete information and incremental type-checking during program development. We describe these problems and present an integrated solution as prototyped in FQL.


Type System Dependency Graph Type Expression Type Environment Interactive Programming 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Albano, A., Cardelli, L. and Orsini, R. Galileo: a Strongly Typed Interactive Conceptual Language. Tech. Rep. 83-11271-2, Bell Laboratories, 1983.Google Scholar
  2. 2.
    Augustsson, L. A Compiler for Lazy ML. Proc. 1984 ACM Conf. on Lisp and Functional Programming, Austin, Texas, ACM, Aug., 1984, pp. 218–227.Google Scholar
  3. 3.
    Buneman,O.P., Frankel,R.E. and Nikhil,R. A Practical Functional Programming System for Databases. Proc. ACM Conference on Functional Programming Languages and Computer Architecture, Portsmouth, New Hampshire, 1981, pp. 164–186.Google Scholar
  4. 4.
    Buneman, O.P., Frankel, R.E. and Nikhil, R. An Implementation Technique for Database Query Languages. ACM Trans. on Database Systems 7, 2 (June 1982), 164–186.Google Scholar
  5. 5.
    Burstall,R.M., MacQueen,D. and Sanella,D. Hope: an Experimental Applicative Language. Proceedings of the Lisp Conference, Stanford, ACM, 1980, pp. 136–143.Google Scholar
  6. 6.
    Cardelli, L. ML Under Unix. Bell Laboratories, 1983.Google Scholar
  7. 7.
    Damas,L. and Milner,R. Principal Type-Schemes for Functional Programs. Proc. 9th Symp. on Principles of Programming Languages, ACM, Jan., 1982, pp. 207–212.Google Scholar
  8. 8.
    Gordon, M.J.C., Milner, R. and Wadsworth, C. Lecture Notes in Computer Science. Vol. 78: Edinburgh LCF. Springer-Verlag, Berlin, 1979.Google Scholar
  9. 9.
    Liskov, B.H. and Zilles, S.N. Programming with Abstract Data Types. SIGPLAN Notices 9, 4(1974), 50–59. (Proc. ACM SIGPLAN Conf. on VHLL)Google Scholar
  10. 10.
    Milner, R. A Theory of Type Polymorphism in Programming. J. Computer and System Sciences 17 (1978), 348–375.Google Scholar
  11. 11.
    Mycroft,A. and O'Keefe,R. A Polymorhic Type System for Prolog. Proc. Logic Programming Workshop 83, Portugal, 1983, pp. 107–122.Google Scholar
  12. 12.
    Nikhil,R.S. An Incremental, Strongly-Typed Database Query Language. Ph.D. Th., Moore School, University of Pennsylvania, Philadelphia, Aug., 1984. Available as Technical Report MS-CIS-85-02Google Scholar
  13. 13.
    Robinson, J.A. Computational Logic: the Unification Computation. Machine Intelligence, Vol 6, Einburgh University Press, Edinburgh, Scotland, 1971, pp. 63–72.Google Scholar
  14. 14.
    Steele,G.L. Jr. and Sussman,G.J. The Revised Report on Scheme: A Dialect of LISP. Tech. Rep. Al Memo 452, MIT Artificial Intelligence Laboratory, Jan., 1978.Google Scholar
  15. 15.
    Steele,G.L. Jr. and Sussman,G.J. The Art of the Interpreter, or, The Modularity Complex (Parts Zero, One, and Two). Tech. Rep. Al Memo 453, MIT Artificial Intelligence Laboratory, May, 1978.Google Scholar
  16. 16.
    Turner,D.A. SASL Manual. University of St.Andrews, 1976.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1985

Authors and Affiliations

  • Rishiyur S. Nikhil
    • 1
  1. 1.MIT Laboratory for Computer ScienceCambridgeU.S.A.

Personalised recommendations