Me gustaría saber si hay una forma "fácil" de llamar al código Prolog (preferiblemente SWI-Prolog) desde el código C# (en un contexto de Unity).
Ya intenté usar la interfaz SWI-Prolog - C# ( fuente aquí ), sin embargo, no está bien mantenida y no puedo hacer que funcione con la última versión de SWI-Prolog 64 bits (8.2.4 a partir de hoy).
También he visto que es posible enviar información usando un socket SWI-Prolog y un socket C# (o Unity Socket), pero no puedo hacer que funcione, y no estoy seguro de que usar socket sea la mejor idea para el rendimiento.
La única solución que funcionó para mí fue usar otro motor de prólogo "personalizado": CSharpProlog . Esto me permite integrar código Prolog en archivos CSharp. Sin embargo, me gustaría usar SWI-Prolog si es posible, ¿alguien sabe cómo puedo hacerlo?
Desde el enlace que proporcionó, no es evidente que la fuente esté disponible aquí . Solo intente compilarlo, para que se ajuste a la arquitectura de su máquina de destino.
Estoy intentando generar la interfaz en Linux, con MonoDevelop, pero no es inmediato, volveré a intentarlo más tarde. Mientras tanto, podrías probar en Windows. Probablemente será más simple...
editar
Ahora tuve tiempo de intentar compilar desde el código fuente en Windows 10 de 64 bits y, hasta ahora, parece funcionar bastante bien. Estoy usando VisualStudio Community 2017, y después de abrir la solución (contrib-swiplcs\SwiPlCs_git.sln), definí _PL_X64 en las propiedades de SwiPLcs - compilación.
HTH
editar
He subido este repositorio que muestra un uso simplificado de SWIPlC. Tenga en cuenta que hay un directorio (swipl_cs) donde simplemente copié (sin modificar) los archivos fuente indispensables de SwiPlCs. Hay un solo archivo Prolog que calcula las soluciones de problemas de N-Queens (solo la primera, para mantener las cosas lo más simples posible) y muestra los pasos realizados por CLP (FD), gracias a Markus Triska por la implementación original.