Markus Triska
Markus Triska
Looks excellent to me, thank you a lot! Please consider also the description of the predicate if you are interested! Ideally the description also conveys the generality.
Regarding wording: I think the description in the [Prologue](https://www.complang.tuwien.ac.at/ulrich/iso-prolog/prologue#append) is very close to ideal: "`append(Xs, Ys, Zs)` is true if Zs is the concatenation of the lists Xs and Ys."...
P.S.: I agree the name is very bad, it's an imperative name that suggests a particular usage mode. In GUPU, the name for this relation is **`liste_liste_zusammen/3`**.
Personally, I think in an ideal set of examples, each of the examples tells us something interesting, something we do not yet know from the other examples. In this concrete...
I would suggest to instead include **`library(debug)`**. For instance, it is provided by Scryer Prolog, here is its documentation: https://www.scryer.pl/debug With `library(debug)`, you can understand the **reason** *why* a predicate fails,...
I think the `portray_clause/1` imitation could use `writeq/1`, and append `.` at the end so that the resulting term can be read with `read/2`.
Could you please try it with the `rebis-dev` development branch? With it, I get: ?- facts([a,B]). B = b. % expected
I suggest you keep it open until it is resolved also in `master` (i.e., after `rebis-dev` is merged). Very nice catch!
@adri326 and @bakaq: since you have also shown interest in architectural questions in multi-threaded context, I would greatly appreciate if you would also like to have a look at this,...
A simple and correct solution seems a very good choice, even if it yields suboptimal performance or even a slowdown at the moment.