We describe a programming language called Web Prolog. We think of it as a web programming language, or, more specifically, as a web logic programming language. The language is based on Prolog, with a good pinch of Erlang added. We stay close to traditional Prolog, so close that the vast majority of programs in Prolog textbooks will run without modification. Towards Erlang we are less faithful, picking only features we regard as useful in a web programming language, e.g. features that support concurrency, distribution and intra-process communication. In particular, we borrow features that make Erlang into an actor programming language, and on top of these we define the concept of a pengine – a programming abstraction in the form of a special kind of actor which closely mirrors the behaviour of a Prolog top-level. On top of the pengine abstraction we develop a notion of non-deterministic RPC and the concept of the Prolog Web.
[1]
Tom Schrijvers,et al.
Under Consideration for Publication in Theory and Practice of Logic Programming Swi-prolog
,
2022
.
[2]
Lars-Åke Fredlund,et al.
A unified semantics for future Erlang
,
2010,
Erlang '10.
[3]
Jan Wielemaker,et al.
Pengines: Web Logic Programming Made Easy
,
2014,
Theory Pract. Log. Program..
[4]
Fabrizio Riguzzi,et al.
Using SWISH to Realize Interactive Web-based Tutorials for Logic-based Languages
,
2018,
Theory and Practice of Logic Programming.
[5]
Joe Armstrong,et al.
A history of Erlang
,
2007,
HOPL.