This is a Port of the https://github.com/fedesilva/styla to scala 2.13.3 Styla - a Prolog in Scala, The name STYLA stands tentatively for "Scala Terms Yield Logic Agents" but hints toward the fact that style (seen as "elegance" of implementation) has been a major design principle behind it. Styla is a fairly complete Prolog interpreter written in Scala, derived from Kernel Prolog (see Fluents: A Refactoring of Prolog for Uniform Reflection and Interoperation with External Objects CL'2000). Just type "styla" to run the system from its precompiled "styla.jar" file. If you do not have Scala installed, and just want to embed Styla in a Java or Android application, just download the self-contained JavaCallsStyla.zip file, unzip it and type "go" inside the resulting folder, then customize JavaMain.java as needed. the same directory contains also the scripts "jstyla" and "jstyla.bat" that can run the interactive Styla toplevel, even if you do not have Scala installed. Use the scripts "compile" to recompile the system with scalac "run" to run it with scala and "jrun" to run it with java (possibly edit for path info in this case). The file "prolog/fluents/Lib.scala" embeds Prolog code that is present at start-up. New Prolog code that you want part of the default libraries can be added there. Sample programs are in directory "progs". Try "bm", "bm1", "bm2" shell scripts for benchmarking. Among the features not found in most Prologs, first class Logic Engines - and a generic view of everything as Fluents (TermSinks and TermSources) that abstract away iteration over various data types, including answers produced by Logic Engines. Here are some limitations, most things not on this list and expected from a Prolog system should work. - toplevel goals that are not conjunctions should be parenthesized - operators are all fixed and "xfx" associativity, but they match the default priorities of most Prologs' operators - see examples in "progs" - no gui or networking - Scala can do all that better Take a look at "prolog.Main" for the start-up sequence - that gives a glimpse of how to embed it into a Scala or Java program. To add a new built-in, just clone the closest match in prolog.builtins and drop it in the same directory - the runtime system it will instantly recognize it. Enjoy, Paul Tarau P.S. Styla uses a few interesting Scala goodies, not available in Java: - higher order functions, maps, folds, case classes etc. - combinator parsers - "poor man's DCGs" :-) - Scala's elegant implicit conversions between lists, arrays, sequences etc. - Scala's arbitrary length integers and decimals (with a natural syntax, in contrast to Java) - Scala's """...""" strings - for regexps and to embed Prolog code directly in Scala classes - a few IO abstractions available in Scala that view things like file operations as iterators - a natural match to the original Fluents of Kernel Prolog from which Styla was derived - a few IO abstractions available in Scala that view things like file operations as iterators - a natural match to the original Fluents of the Java-based Kernel Prolog from which Styla was derived Note that he latest version of Kernel Prolog is now an open source Google project at: http://code.google.com/p/kernel-prolog/ ------------------------------------------- New: development of Scala and Akka Actors.