Schelog is an embedding of Prolog-style logic programming in Scheme. “Embedding” means you don’t lose Scheme: You can use Prolog-style and conventional Scheme code fragments alongside each other. Schelog contains the full repertoire of Prolog features, including meta-logical and second-order (“set”) predicates, leaving out only those features that could more easily and more efficiently be done with Scheme subexpressions.
The Schelog implementation uses the approach to logic
programming described in Felleisen  and
Haynes . In contrast to earlier Lisp simulations of
which used explicit continuation
arguments to store failure (backtrack) information, the
Felleisen and Haynes model uses the implicit reified
continuations of Scheme as provided by the operator
allows Schelog to be an embedding, ie, logic
programming is not built as a new language on top of Scheme,
but is used alongside Scheme’s other features. Both styles
of programming may be mixed to any extent that a project
The Schelog user does not need to know about the
implementation mechanism or about
continuations to get on with the business of
doing logic programming with Schelog.
This text is a gentle introduction to Schelog syntax and programming. It assumes a working knowledge of Scheme and an awareness of, if not actual programming experience with, Prolog. If you need assistance in either language, you may consult [1, 5, 6, 7, 9, 11] for Scheme, and [2, 10, 12] for Prolog. There are doubtless many other excellent books and online documents available.