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.
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)