Lisps are, generally speaking, the easiest languages in which to embed other languages, but there are good examples in many languages. As (I think)
@Mariano Guerra was gesturing toward, MiniKanren has been widely implemented. Here's are a pair of OCaml ones (
1,
2), the latter actually based on MicroKanren.
My favorite person for this sort of thing in Haskell and OCaml is Oleg Kiselyov, for example
this backtracking paper (co-authored with Friedman) and several others in that section of his site. See also:
http://okmij.org/ftp/kakuritu/ for some tasty probabilistic programming.