  We present an implementation of the relational programming language
miniKanren as a set of combinators and syntax extensions for OCaml. The key
feature of our approach is polymorphic unification, which can be used to unify
data structures of arbitrary types. In addition we provide a useful generic
programming pattern to systematically develop relational specifications in a
typed manner, and address the problem of integration of relational subsystems
into functional applications.
