-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Querying without adding to database? #24
Comments
With a session it purposefully cuts the evaluation. See L215. It shouldn't be impossible to change the code to support being able to list out all results, but the easiest for you now is to instead find all the goals of a solution. |
Yes, thank you. I've got this working
#+begin_src prolog :results output :session *prolog-sess*
child(john,sue).
child(john,sam).
child(jane,sue).
child(jane,sam).
child(sue,george).
child(sue,gina).
child(pete,hank).
child(hank,roy).
#+end_src
#+name: allchildren1
#+HEADER: :session *prolog-sess*
#+HEADER: :goal list_children1(P,L)
#+begin_src prolog :exports both :results verbatim
list_children(P,L) :- findall(Child, child(Child, P), L).
#+end_src
#+RESULTS: allchildren1
: Correct to: "list_children(P,L)"? L = [john, john, jane, jane, sue, sue,
pete, hank].
Now, could you help me get this into elisp? I'm trying
#+begin_src emacs-lisp :var chlist=allchildren1()
chlist
#+end_src
but it gives no output. Obviously, I'm trying to get the L list. Once I
have this figured out I'll be good to go for a long while with Prolog and
ob-prolog.
…On Thu, Feb 16, 2023 at 3:18 AM Bjarte Johansen ***@***.***> wrote:
With a session it purposefully cuts the evaluation. See L215
<https://github.com/ljos/ob-prolog/blob/331899cfe345c934026c70b78352d320f7d8e239/ob-prolog.el#L216>.
It shouldn't be impossible to change the code to support being able to list
out all results, but the easiest for you now is to instead to find all
the goals of a solution
<https://www.swi-prolog.org/pldoc/man?section=allsolutions>.
—
Reply to this email directly, view it on GitHub
<#24 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABA73W6PSTD4AR5SZ3H3EEDWXXWG3ANCNFSM6AAAAAAUYBUTJU>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
--
⨽
Lawrence Bottorff
Grand Marais, MN, USA
***@***.***
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Could you enlighten us on exactly how the goal querying works? For example, I've got a query that has multiple answers, but I seem to only get the first one.
`child(john,sue).
child(john,sam).
child(jane,sue).
child(jane,sam).
child(sue,george).
child(sue,gina).
male(john).
male(sam).
male(george).
female(june).
female(sue).
female(jane).
parent(Y,X) :- child(X,Y).
father(Y,X) :- child(X,Y), male(Y).
opp_sex(X,Y) :- male(X), female(Y).
opp_sex(Y,X) :- male(X), female(Y).
grand_father(X,Z) :- father(X,Y), parent(Y,Z).`
`#+NAME: grandfather1
#+HEADER: :session prolog-sess
#+HEADER: :goal gf(X,Z)
#+BEGIN_SRC prolog
gf(X,Z) :- grand_father(X,Z).
#+END_SRC
#+RESULTS: grandfather1
| A | = | george, |
| B | = | john. |`
There should be a george, jane match too. So how do you get the SWI ";" behavior?
The text was updated successfully, but these errors were encountered: