Yield, Mercury and Prolog for dot.NET

There is more than one option now for Prolog for the CLR under Microsoft .NET

One of the most interesting is Yield Prolog

The C# language feature which appeared in version 2.0 and which brings C# up to the ranks of Smalltalk and Ruby is yield. It means that a block of code can be treated like an object.

What this means for a Prolog implementation is that it is possible to mix declarative predicates with more imperative or functional code. While there is usually a means to accomplish this, the price paid is usually performance. In the case of the multi-paradigm Oz language, the Horn-clause approach of Prolog was abandoned. In other cases there is a foreign language interface to C or java, but with a performance price whenever calling out to Prolog.


For years there had been two Prolog variants which offered good performance: both commercial PDC Prolog and academic Mercury were typed prolog variants. Now Prolog comes to a typed-environment ( for SmalltalkProlog see our portal at www.aboutus.org )

And now that there is a project underway to bring Mercury to .NET it is very interesting to see what can be done within C# itself.

Yield Prolog adds very little baggage: the price you pay is abandoning some familiar Prolog syntax in exchange for prolog-like behavior.

One Response to “Yield, Mercury and Prolog for dot.NET”

  1. You said “the price you pay is abandoning some familiar Prolog syntax in exchange for prolog-like behavior” but note also that Yield Prolog comes with a compiler that turns normal Prolog into C#, Javascript or Python. See:
    http://yieldprolog.sourceforge.net/queryEditor.html

    Thanks for the link!
    - Jeff (author of Yield Prolog)

Leave a Reply

You must be logged in to post a comment.