scripts script para javascript compilation prolog iso-prolog transpiler

para - scripting javascript



Sistemas de prologo en Javascript (1)

Javascript parece volverse popular como un lenguaje de implementación para otros lenguajes de programación. El artículo compilación ligera de (C) LP a JavaScript. La ICLP 2012 me llamó la atención sobre esto.

Existen muchos prototipos de prueba de concepto para sistemas Prolog escritos en Javascript en la Web.

¿Cuáles son los sistemas Prolog actuales, mantenidos activamente, preferiblemente conformes con ISO escritos en Javascript?


El único Prólogo en JavaScript que conozco es YieldProlog , pero no lo he probado ampliamente, solo el código disponible en QueryEditor .

Tenía la esperanza de que el uso del constructo de rendimiento fuera liviano (utilicé ampliamente dicho constructo en C #, y lo encontré - emparejado con lambda - bastante poderoso).

Pero cuando inspeccioné (resumidamente) la fuente, la encontré realmente compleja, a pesar de las suposiciones.

editar

Recientemente he encontrado estas contribuciones, que parecen muy interesantes: proscript y proscript2 .

editar

una nueva implementación disponible:

Tau Prolog , me llamó la atención de Jan en la lista de correo de SWI

editar

Algo nuevo, hhprolog , un motor de Prolog puro, basado en el código y la documentación proporcionada por Paul Tarau, portado por mí a Javascript. Por lo tanto, disponible en ambos navegadores y NodeJS.

El proyecto aún es preliminar, lo que más se necesita es arrancar al intérprete: en este momento (pre) la compilación de Prolog a la máquina virtual (novedosa) debe realizarse con SWI-Prolog instalado, configurado correctamente (se necesita JPL).

Para implementar este arranque, probablemente necesitaría implementar la negación, reutilizar la interfaz de Paul o, mejor aún, intentar implementar algo que permanezca en el paradigma puro. En particular, solo aritmética de enteros sin límites (de nuevo por Paul Tarau, hay algo de código de Python disponible - intentaré perezosamente portarlo a Javascript).