• Aucun résultat trouvé

Typing Non-Functional Constructs

6.3 Concluding Remarks

Finally, we would like to point out that our work on incremental type inferencing has grown out of a need for a rich type system for interactive program development environments such as that for Id [50]. A rich type system is a valuable tool in developing large, robust, and reliable software. But in association with interactive environments, it requires careful engineering, so as not to inhibit their interactive and incremental nature.

The Hindley/Milner type inference system is a rich, polymorphic, and tractable system that oers a reasonably unrestricted programming style without compromising eciency or robust-ness. Our incremental scheme further adapts this system for the interactive environment of Id and ts into a general framework for incremental information management that is interesting in its own right. Our work provides a sound theoretical basis to incremental type management along with its ecient implementation.

Bibliography

[1] Alfred V. Aho, John E. Hopcroft, and Jerey D. Ullman. The Design and Analysis of Computer Algorithms. Addison-Wesley, 1974.

[2] Andrew W. Appel and David B. MacQueen. A Standard ML Compiler. Distributed along with the Standard ML of New Jersey Compiler, 1989.

[3] Andrew W. Appel and David B. MacQueen. Standard ML Reference Manual. Princeton University and AT&T Bell Laboratories, Preliminary edition, 1989. Distributed along with the Standard ML of New Jersey Compiler.

[4] Zena M. Ariola and Arvind. P-TAC: A Parallel Intermediate Language. In Proceedings of the Conference on Functional Programming Languages and Computer Architectures, London, UK, pages 230{242, September 1989. Also: CSG Memo 295, MIT Laboratory for Computer Science 545 Technology Square, Cambridge, MA 02139, USA.

[5] Arvind and David E. Culler. Dataow Architectures. In Annual Reviews in Computer Science, volume 1, pages 225{253. Annual Reviews Inc., Palo Alto, CA, 1986.

[6] Arvind, Steve Heller, and Rishiyur S. Nikhil. Programming Generality and Parallel Com-puters. In Fourth International Symposium on Biological and Articial Intelligence Sys-tems, Trento, Italy, September 1988. Also: CSG Memo 287, MIT Laboratory for Computer Science, 545 Technology Square, Cambridge, MA 02139.

[7] Arvind and Rishiyur S. Nikhil. Executing a Program on the MIT Tagged-Token Dataow Architecture. Technical Report CSG Memo 271, MIT Laboratory for Computer Science, 545 Technology Square, Cambridge, MA 02139, June 1988. An earlier version appeared in Proceedings of the PARLE Conference, Eindhoven, The Netherlands, Springer-Verlag LNCS Volume 259, June 15-19, 1987.

[8] Arvind, Rishiyur S. Nikhil, and Keshav K. Pingali. Id Nouveau Reference Manual, Part II: Operational Semantics. Technical report, Computation Structures Group, MIT Labo-ratory for Computer Science, 545 Technology Square, Cambridge, MA 02139, April 1987.

[9] Arvind, Rishiyur S. Nikhil, and Keshav K. Pingali. I-Structures: Data Structures for Par-allel Computing. ACM Transactions on Programming Languages and Systems, 11(4):598{

632, 1989.

[10] Lennart Augustsson. A Compiler for Lazy ML. In Proceedings of the 1984 ACM

Confer-[11] Lennart Augustsson. Compiling Pattern Matching. In Proceedings of the 1985 Workshop on Implementations of Functional Languages, Goteborg, Sweden. Chalmers University of Technology, February 1985.

[12] H. P. Barendregt. The Lambda Calculus: Its Syntax and Semantics. North-Holland, Amsterdam, 1984.

[13] Kim B. Bruce, Albert R. Meyer, and John C. Mitchell. The Semantics of Second-Order Lambda Calculus. Information and Computation, 85:76{134, 1990.

[14] Rod M. Burstall, David B. MacQueen, and Don Sanella. Hope: an Experimental Applica-tive Language. In Proceedings of the Lisp Conference, Stanford, pages 136{143. ACM, August 1980.

[15] L. Cardelli. Compiling a Functional Language. In Proceedings of the ACM Symposium on LISP and Functional Programming, pages 208{217, August 1984.

[16] L. Cardelli. Basic Polymorphic Typechecking. Science of Computer Programming, 8(2):147{172, 1987.

[17] L. Cardelli and P. Wegner. On Understanding Types, Data Abstraction and Polymor-phism. Computing Surveys, 17(4), December 1985.

[18] D. Clement, J. Despeyroux, T. Despeyroux, and G. Kahn. A Simple Applicative Language:

Mini-ML. In Proceedings of the ACM Symposium on LISP and Functional Programming, pages 13{27, August 1986.

[19] L. Damas. Type Assignment in Programming Languages. PhD thesis, University of Edin-burgh, Department of Computer Science, 1985.

[20] L. Damas and R. Milner. Principle Type Schemes for Functional Programs. In Proceedings of the 9th ACM Symposium on Principles of Programming Languages, pages 207{212, 1982.

[21] S. I. Feldman. Make { A Program for Maintaining Computer Programs. In Unix Program-mer's Manual Supplementary Documents Volume 1. 4.3 Berkeley Software Distribution, April 1986.

[22] David K. Giord, Pierre Jouvelot, John M. Lucassen, and Mark A. Sheldon. FX-87 Ref-erence Manual. Technical Report MIT/LCS/TR-407, MIT Laboratory for Computer Sci-ence, September 1987.

[23] J. Y. Girard. Interpretation fonctionelle et elimination des coupures de l'arithmetique d'ordre superieur. These D'Etat, Universite de Paris VII, 1972.

[24] Michael J. Gordon, Arthur J. Milner, and Christopher P. Wadsworth. Edinburgh LCF, volume 78 of Lecture Notes in Computer Science, chapter 2. Springer-Verlag, 1979.

[25] Robert Harper, Robin Milner, and Mads Tofte. The Denition of Standard ML Version 2. Technical Report ECS-LFCS-88-62, Laboratory for Foundations of Computer Science, Department of Computer Science, University of Edinburgh, August 1988. (also published as CSR-274-88).

[26] R. Hindley. The Principle Type Scheme of an Object in Combinatory Logic. Transactions of the American Mathematical Society, 146:29{60, December 1969.

[27] P. Hudak and P. Wadler (editors). Report on the programming language Haskell, a non-strict purely functional language (Version 1.0). Technical Report YALEU/DCS/RR777, Yale University, Department of Computer Science, April 1990.

[28] G. Huet. Resolution d'equations dans les langages d'ordre 1,2,...,

!

. PhD thesis, Universite de Paris VII, 1976.

[29] Paris C. Kanellakis and John C. Mitchell. Polymorphic Unication and ML Typing. In Proceedings of the 16th ACM Symposium on Principles of Programming Languages, pages 105{115, January 1989.

[30] A.J. Kfoury and J. Tiuryn. Type Reconstruction in Finite Rank Fragments of the Second-Order

-Calculus. Technical Report 89-011, Boston University, October 1989.

[31] A.J. Kfoury, J. Tiuryn, and P. Urzyczyn. An Analysis of ML Typability. Technical Report 89-009, Boston University, October 1989.

[32] A.J. Kfoury, J. Tiuryn, and P. Urzyczyn. Type-checking in the presence of polymorphic recursion. Technical report, Boston University, 1989.

[33] J.W. Klop. Term Rewriting Systems. Technical report, Center for Mathematics and Computer Science, Amsterdam, The Netherlands, September 1985.

[34] J.W. Klop. Term Rewriting Systems: A Tutorial. Technical report, Center for Mathe-matics and Computer Science, Amsterdam, The Netherlands, 1987. Also published in the Bulletin of the European Association for Theoretical Computer Science, 32, 1987.

[35] Kevin Knight. Unication: A Multidisciplinary Survey. ACM Computing Surveys, 21(1), March 1989.

[36] Barbara Liskov and John Guttag. Abstraction and Specication in Program Development.

MIT Press, 1986.

[37] David MacQueen. Modules for Standard ML. In Proceedings of the ACM Symposium on LISP and Functional Programming, pages 198{207, August 1984.

[38] Harry G. Mairson. Deciding ML Typability is Complete for Deterministic Exponential Time. In Proceedings of the 17th ACM Symposium on Principles of Programming Lan-guages, pages 382{401, January 1990.

[39] Lambert Meertens. Incremental Polymorphic Type Checking in B. In Proceedings of the 10th ACM Symposium on Principles of Programming Languages, January 1983.

[40] Robin Milner. A Theory of Type Polymorphism in Programming. Journal of Computer and System Sciences, 17:348{375, 1978.

[41] Robin Milner. A Proposal for Standard ML. In Proceedings of the ACM Symposium on Lisp and Functional Programming, pages 184{197, August 1984.

[42] Robin Milner. The Standard ML Core Language. Polymorphism, II(2), October 1985.

[43] A. Mycroft. Polymorphic Type Schemes and Recursive Denitions. In International

Sym-[44] Rishiyur S. Nikhil. Practical Polymorphism. In Proceedings of the Conference on Func-tional Programming Languages and Computer Architectures, Nancy, FRANCE, volume 201 of Lecture notes in Computer Science. Springer-Verlag, September 1985.

[45] Rishiyur S. Nikhil. Id Nouveau Reference Manual, Part I: Syntax. Technical report, Computation Structures Group, MIT Laboratory for Computer Science, 545 Technology Square, Cambridge, MA 02139, April 1987.

[46] Rishiyur S. Nikhil. Id (Version 88.1) Reference Manual. Technical Report CSG Memo 284, MIT Laboratory for Computer Science, 545 Technology Square, Cambridge, MA 02139, August 1988.

[47] Rishiyur S. Nikhil. Overloading. For internal circulation in the Computation Structures Group, MIT Laboratory for Computer Science, Cambridge, MA 02139, May 1988.

[48] Rishiyur S. Nikhil. Id Version 90.0 Reference Manual. Technical Report CSG Memo 284-1, MIT Laboratory for Computer Science, 545 Technology Square, Cambridge, MA 02139, July 1990.

[49] Rishiyur S. Nikhil and Arvind. Programming in Id: A Parallel Programming Language.

Book in preparation, 1990.

[50] Rishiyur S. Nikhil, P. R. Fenstermacher, J. E. Hicks, and R. P. Johnson. Id World Reference Manual. Computation Structures Group, MIT Laboratory for Computer Science, 545 Technology Square, Cambridge, MA 02139, revised edition, November 1989.

[51] J. Ophel. AIMLESS: A Programming Environment for ML. Technical Report TR-CS-88-20, Australian National University, 1988.

[52] G. D. Plotkin. A Structural Approach to Operational Semantics. Technical Report DAIMI FN-19, Computer Science Department, Aarhus University, Aarhus, Denmark, September 1981.

[53] J. C. Reynolds. Towards a Theory of Type Structure. In Paris Colloquium on Program-ming, volume 19 of Lecture Notes in Computer Science, pages 408{425. Springer-Verlag, 1974.

[54] J. A. Robinson. A Machine-Oriented Logic Based on the Resolution Principle. Journal of the ACM, 12(1):23{41, 1965.

[55] D. Scott. Data types as lattices. Siam Journal of Computing, 5(3):522{587, 1976.

[56] J. E. Stoy. Denotational Semantics. MIT Press, Cambridge, MA, 1977.

[57] Mads Tofte. Operational Semantics and Polymorphic Type Inference. PhD thesis, Univer-sity of Edinburgh, Department of Computer Science, 1988. Also published as ECS-LFCS-88-54.

[58] Ian Toyn, Alan Dix, and Colin Runciman. Performance Polymorphism. In Functional Pro-gramming Languages and Computer Architecture, volume 274 of Lecture Notes in Computer Science, pages 325{346. Springer-Verlag, 1987. Proceedings of the FPCA Conference held in Portland, Oregon, 1987.

[59] Kenneth R. Traub. A Compiler for the MIT Tagged-Token Dataow Architecture. Tech-nical Report LCS TR-370, MIT Laboratory for Computer Science, 545 Technology Square, Cambridge, MA 02139, August 1986.

[60] David A. Turner. Miranda: A non-strict functional language with polymorphic types. In Proceedings of the Conference on Functional Programming Languages and Computer Ar-chitectures, Nancy, FRANCE, volume 201 of Lecture Notes in Computer Science. Springer-Verlag, September 1985.

[61] David A. Turner. An Overview of Miranda. SIGPLAN Notices, 21(12):158{166, December 1986.

[62] Kevin S. Van Horn. Functional Language Implementations Survey, March 1990. Message on the Functional Programming Mailing List.

[63] Philip Wadler and Stephen Blott. How to make ad-hoc polymorphism less ad hoc. In Proceedings of the 16th ACM Symposium on Principles of Programming Languages, Austin, Texas, pages 60{76, January 1989.