If you are interested doing logic programming (Prolog etc) in functional languages (Haskell, Scheme, Lisp, ...) look at Kanren, MiniKanren and "backtracking monads". The [MiniKanren ](http://minikanren.org/) and [Oleg Kiselyov](http://okmij.org/) homepages seem to have links to everything relevant to the subject.