An approach to completing variable names for implicitly typed functional languages

This paper presents an approach to completing variable names when writing programs in implicitly typed functional languages. As a first step toward developing practical systems, we considered a simple case: up to the cursor position the program text is given completely. With this assumption we specify a variable completion problem for an implicitly typed core functional language with let-polymorphism and show an algorithm for solving the problem. Based on the algorithm we have implemented a variable name completion system for the language as an Emacs-mode.

[1]  Susumu Katayama Systematic search for lambda expressions , 2005, Trends in Functional Programming.

[2]  Masatomo Hashimoto First-Class Contexts in ML , 1998, ASIAN.

[3]  Rishiyur S. Nikhil,et al.  Incremental Polymorphism , 1991, FPCA.

[4]  Christian Haack,et al.  Type error slicing in implicitly typed higher-order languages , 2004, Sci. Comput. Program..

[5]  Robin Milner,et al.  Definition of standard ML , 1990 .

[6]  Colin Runciman,et al.  Retrieving re-usable software components by polymorphic type , 1989, Journal of Functional Programming.

[7]  Ruzica Piskac,et al.  Code Completion using Quantitative Type Inhabitation , 2011 .

[8]  Christian Haack,et al.  Type error slicing in implicitly typed higher-order languages , 2003, Sci. Comput. Program..

[9]  Romain Robbes,et al.  How Program History Can Improve Code Completion , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[10]  Roberto Di Cosmo,et al.  Type isomorphisms in a type-assignment framework , 1992, POPL '92.

[11]  Mikael Rittri,et al.  Using types as search keys in function libraries , 1989, Journal of Functional Programming.

[12]  Sumit Gulwani,et al.  Type-directed completion of partial expressions , 2012, PLDI.

[13]  Joseph E. Stoy Proceedings of the fourth international conference on Functional programming languages and computer architecture , 1989 .

[14]  Umut A. Acar Self-adjusting computation: (an overview) , 2009, PEPM '09.

[15]  J. A. Robinson,et al.  A Machine-Oriented Logic Based on the Resolution Principle , 1965, JACM.

[16]  Benjamin C. Pierce,et al.  Local type inference , 2000, TOPL.

[17]  Dan Grossman,et al.  Searching for type-error messages , 2007, PLDI '07.

[18]  Andrew K. Wright Simple imperative polymorphism , 1995, LISP Symb. Comput..

[19]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[20]  John C. Mitchell,et al.  Foundations for programming languages , 1996, Foundation of computing series.