Abstract types have existential type
ACM Transactions on Programming Languages and Systems (TOPLAS)
Polymorphic type inference and abstract data types
ACM Transactions on Programming Languages and Systems (TOPLAS)
Admissible graph rewriting and narrowing
JICSLP'98 Proceedings of the 1998 joint international conference and symposium on Logic programming
Type inference with constrained types
Theory and Practice of Object Systems - Special issue on foundations of object-oriented languages
Journal of the ACM (JACM)
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
TOY: A Multiparadigm Declarative System
RtA '99 Proceedings of the 10th International Conference on Rewriting Techniques and Applications
Polymorphic Type Schemes and Recursive Definitions
Proceedings of the 6th Colloquium on International Symposium on Programming
Proceedings of the Third International Conference on Algebraic and Logic Programming
A versatile constraint-based type inference system
Nordic Journal of Computing
The Implementation of Functional Programming Languages (Prentice-Hall International Series in Computer Science)
Polymorphic algebraic data type reconstruction
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
A new generic scheme for functional logic programming with constraints
Higher-Order and Symbolic Computation
Hm(x) type inference is clp(x) solving
Journal of Functional Programming
Communications of the ACM
Multi-paradigm declarative languages
ICLP'07 Proceedings of the 23rd international conference on Logic programming
Rewriting and call-time choice: the HO case
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
Well-typed narrowing with extra variables in functional-logic programming
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
New results on type systems for functional logic programming
WFLP'09 Proceedings of the 18th international conference on Functional and Constraint Logic Programming
Hi-index | 0.00 |
We present a transformational approach to type inference for functional logic programs. More concretely, we give a broad set of examples showing how, given a functional logic program P, we can synthesize a remarkably simple and natural functional logic program P' such that the evaluation of expressions with respect to P' corresponds to typing the expressions in the original P. We start developing those ideas for the case of type inference with standard Hindley-Milner types, and after that we consider some variations, like local definitions with different degrees of polymorphism, existential types and type checking in the presence of polymorphic recursion. For the basic case of Hindley-Milner types we provide also a formalization of the transformation and proofs of its correctness. Besides its potential applicability to the implementation of different type systems, or to the educational use of the synthesized typing programs to explain different type inference/checking processes, the paper demonstrates vividly the expressive power of functional logic languages, as well as some of their limitations for metaprogramming purposes, that we have overcome by providing a suitable set of metalogical functions to inspect, classify and manipulate expressions according to their structure, similar to well known Prolog metapredicates for such purposes.