Title: | Embed 'SWI'-'Prolog' |
---|---|
Description: | Interface to 'SWI'-'Prolog', <https://www.swi-prolog.org/>. This package is normally not loaded directly, please refer to package 'rolog' instead. The purpose of this package is to provide the 'Prolog' runtime on systems that do not have a software installation of 'SWI'-'Prolog'. |
Authors: | Matthias Gondan [aut, com, cre] (University of Innsbruck), Jan Wielemaker [ctb, cph] (JW is the lead developer of SWI-Prolog. See https://www.swi-prolog.org/Contributors.html for a list of contributors.), European Commission [fnd] (Erasmus+ Programme, 2019-1-EE01-KA203-051708) |
Maintainer: | Matthias Gondan <[email protected]> |
License: | FreeBSD |
Version: | 9.3.18 |
Built: | 2025-02-06 05:58:18 UTC |
Source: | https://github.com/mgondan/rswipl |
Clear current query
clear()
clear()
TRUE (invisible)
query()
for opening a query
submit()
for submitting a query
query(call("member", expression(X), list(quote(a), "b", 3L, 4))) submit() # X = a submit() # X = "b" clear()
query(call("member", expression(X), list(quote(a), "b", 3L, 4))) submit() # X = a submit() # X = "b" clear()
Create a query
query( q = call("member", expression(X), list(quote(a), "b", 3L, 4, TRUE, expression(Y))) )
query( q = call("member", expression(X), list(quote(a), "b", 3L, 4, TRUE, expression(Y))) )
q |
an R call. The R call consists of symbols, integers and real numbers, character strings, boolean values, expressions, lists, and other calls. Vectors of booleans, integers, floating point numbers, and strings with length N > 1 are translated to prolog compounds !/N, %/N, #/N and $$/N, respectively. |
SWI-Prolog does not allow multiple open queries. If another query is open, it it is closed and a warning is shown.
If the creation of the query succeeds, TRUE
submit()
for submitting a query
clear()
to close the currently open query
query(call("writeln", function(x) {sin(x)})) submit() clear() query(call("=", expression(X), function(x) {sin(x)})) submit() clear() query(call("member", expression(X), list(quote(a), "b", 3L, 4, TRUE, expression(Y), NA, NaN, Inf, NULL, NULL, function(x) {y <- sin(x); y^2}, NULL))) submit() # X = a submit() # X = "b" submit() # X = 3L submit() # X = 4.0 submit() # X = TRUE submit() # X = expression(Y) or Y = expression(X) submit() # X = NA submit() # X = NaN submit() # X = Inf submit() # X = NULL submit() # X = NULL submit() # X = function(x) {y <- sin(x); y^2})) submit() # X = NULL submit() # FALSE (no more results) submit() # warning that no query is open query(call("member", expression(X), list(quote(a), "b", 3L, 4))) query(call("member", expression(X), list(TRUE, expression(Y)))) # warning that another query is open clear()
query(call("writeln", function(x) {sin(x)})) submit() clear() query(call("=", expression(X), function(x) {sin(x)})) submit() clear() query(call("member", expression(X), list(quote(a), "b", 3L, 4, TRUE, expression(Y), NA, NaN, Inf, NULL, NULL, function(x) {y <- sin(x); y^2}, NULL))) submit() # X = a submit() # X = "b" submit() # X = 3L submit() # X = 4.0 submit() # X = TRUE submit() # X = expression(Y) or Y = expression(X) submit() # X = NA submit() # X = NaN submit() # X = Inf submit() # X = NULL submit() # X = NULL submit() # X = function(x) {y <- sin(x); y^2})) submit() # X = NULL submit() # FALSE (no more results) submit() # warning that no query is open query(call("member", expression(X), list(quote(a), "b", 3L, 4))) query(call("member", expression(X), list(TRUE, expression(Y)))) # warning that another query is open clear()
query()
before.Submit a query that has been opened with query()
before.
submit()
submit()
If the query fails, FALSE
is returned. If the query succeeds, a
(possibly empty) list is returned that includes the bindings required to
satisfy the query.
query()
for a opening a query.
clear()
for a clearing a query.
query(call("member", expression(X), list(quote(a), "b", 3L, 4, expression(Y)))) submit() # X = 3L submit() # X = 4.0 submit() # X = TRUE submit() # X = expression(Y) or Y = expression(X) submit() # FALSE submit() # warning that no query is open query(call("member", expression(X), list(quote(a), "b", 3L, 4))) submit() # X = a submit() # X = "b" clear()
query(call("member", expression(X), list(quote(a), "b", 3L, 4, expression(Y)))) submit() # X = 3L submit() # X = 4.0 submit() # X = TRUE submit() # X = expression(Y) or Y = expression(X) submit() # FALSE submit() # warning that no query is open query(call("member", expression(X), list(quote(a), "b", 3L, 4))) submit() # X = a submit() # X = "b" clear()
This function is internally used to emulate swipl -g goal using the R program: R -e "rswipl::swipl()" -q –no-echo –args -g goal
swipl(sigalert = NA)
swipl(sigalert = NA)
sigalert |
Use a different alert signal than SIGUSR2 (ignored on Windows) |
nothing useful