The design of the new logic programming language is influenced by the need for an efficient implementation, which is reasonable given the near-term requirements. But there can also be value in taking a long-term view, as Paul Graham suggests in "The Hundred-Year Language" (http://www.paulgraham.com/hundred.html). We should ask ourselves, what would the ideal language be if efficiency was not a consideration?
This article proposes such a language. The language objectives are
The language, called "axiomatic language", is based on the idea that the external behavior of any function or program, even an interactive program, can be represented by a static infinite set of symbolic expressions that enumerate all possible inputs, or sequences of inputs, along with the corresponding outputs. Thus the language is just a formal system for generating these symbolic expressions. Axiomatic language can be described as pure, definite Prolog with Lisp syntax, plus HiLog higher-order generalization, plus "string variables", which match a string of expressions in a sequence. Details and examples can be found at www.axiomaticlanguage.org.
I believe the various features being considered for the new LP language (constraints, types, modules, etc.) can be defined within this much simpler language using its extensibility. The papers on the language website show how Lisp-like expression evaluation and even a simple procedural language can be defined. Thus debates over language features would become debates over what to put in a library.
The challenge, of course, is to automatically generate efficient programs from specifications. Hopefully it won't take 100 years! Perhaps human-aided program synthesis is a practical intermediate goal.
A consensus on a long-term LP language would provide a target which might benefit the current NLPL design and might help focus research on program transformation. The language may also be useful as a non-executable language for software specification.