=== Haskell unification-fd package AUTHORS/THANKS file === The unification-fd package was written by wren gayle romano and is released under the terms in the LICENSE file. === Thanks === Christopher Anand --- for partially funding this work at McMaster University during the summer of 2011. Nathaniel W. Filardo --- for helping to figure out the intricacies of unification in Dyna2 (though this code is at best loosely based on that work). Edward Kmett --- for pointing out the weighted extension to path compression (popular in the union--find literature), and for suggsting the switch to having variables be of kind * rather than *->* Roman Cheplyaka --- for suggesting the switching of type parameter order on UTerm so that it actually is the free monad. And for providing the freshenAll implementation. Graham Rogers --- for suggesting the addition of Functor, Foldable, and Traversable instances for UnificationFailure. === Related Work === The two-level types approach was adapted from Tim Sheard[1]. The initial (simple yet naive) implementation of unification was based on Sheard's presentation of Cardelli's[2] algorithm in Modula-2. Efficient backtracking search via the logict library is described by Kiselyov et al.[3] The idea of functional pointers were independently discovered by Dijkstra et al.[4] after their apperance in Dyna2. [1] Tim Sheard (2001) /Generic Unification via Two-Level Types and/ /Parameterized Modules/, Functional Pearl, ICFP. [2] Luca Cardelli (1987) /Basic polymorphic typechecking/. Science of Computer Programming, 8(2):147--172. [3] Oleg Kiselyov, Chung-chieh Shan, Daniel P. Friedman, and Amr Sabry (2005) /Backtracking, Interleaving, and Terminating/ /Monad Transformers/, ICFP. [4] Atze Dijkstra, Arie Middelkoop, S. Doaitse Swierstra (2008) /Efficient Functional Unification and Substitution/, Technical Report UU-CS-2008-027, Utrecht University.