Unification: a multidisciplinary survey
ACM Computing Surveys (CSUR)
Basic category theory for computer scientists
Basic category theory for computer scientists
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
PolyP—a polytypic programming language extension
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Machine-Oriented Logic Based on the Resolution Principle
Journal of the ACM (JACM)
Advanced Functional Programming, Second International School-Tutorial Text
Generic unification via two-level types and parameterized modules
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
MPC '02 Proceedings of the 6th International Conference on Mathematics of Program Construction
Fundamenta Informaticae - Concurrency specification and programming
A tutorial on the universality and expressiveness of fold
Journal of Functional Programming
Science of Computer Programming - Special issue on mathematics of program construction (MPC 2002)
Two-level types and parameterized modules
Journal of Functional Programming
Prufrock: a framework for constructing polytypic theorem provers
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
A lightweight approach to datatype-generic rewriting
Proceedings of the ACM SIGPLAN workshop on Generic programming
Generic programming with fixed points for mutually recursive datatypes
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Monadic constraint programming
Journal of Functional Programming
A lightweight approach to datatype-generic rewriting
Journal of Functional Programming
CiE'06 Proceedings of the Second conference on Computability in Europe: logical Approaches to Computational Barriers
Fundamenta Informaticae - Concurrency Specification and Programming (CS&P'2002), Part 2
Hi-index | 0.00 |
Unification, or two-way pattern matching, is the process of solving an equation involving two first-order terms with variables. Unification is used in type inference in many programming languages and in the execution of logic programs. This means that unification algorithms have to be written over and over again for different term types. Many other functions also make sense for a large class of datatypes; examples are pretty printers, equality checks, maps etc. They can be defined by induction on the structure of user-defined datatypes. Implementations of these functions for different datatypes are closely related to the structure of the datatypes. We call such functions polytypic. This paper describes a unification algorithm parametrised on the type of the terms, and shows how to use polytypism to obtain a unification algorithm that works for all regular term types.