]> Repositorios git - scryer-prolog.git/log
scryer-prolog.git
4 years agoMerge pull request #1461 from triska/clpz_sign
Mark Thom [Thu, 5 May 2022 23:24:54 +0000 (17:24 -0600)]
Merge pull request #1461 from triska/clpz_sign

ADDED: sign/1

4 years agoADDED: sign/1
Markus Triska [Thu, 5 May 2022 20:49:48 +0000 (22:49 +0200)]
ADDED: sign/1

4 years agoremove comment that seems no longer valid
Markus Triska [Thu, 5 May 2022 20:51:21 +0000 (22:51 +0200)]
remove comment that seems no longer valid

4 years agofix rnd_i fixnum casting bug (#1456, #1458)
Mark Thom [Thu, 5 May 2022 04:44:12 +0000 (22:44 -0600)]
fix rnd_i fixnum casting bug (#1456, #1458)

4 years agotrack f64 offsets in Literal (#1190)
Mark Thom [Thu, 5 May 2022 03:54:46 +0000 (21:54 -0600)]
track f64 offsets in Literal (#1190)

4 years agocompact lists of characters to partial strings in read_term_from_heap (#1452, #1453)
Mark Thom [Mon, 2 May 2022 05:13:48 +0000 (23:13 -0600)]
compact lists of characters to partial strings in read_term_from_heap (#1452, #1453)

4 years agofix match_partial_string, compare_pstr_to_string (#1451)
Mark Thom [Sun, 1 May 2022 01:51:19 +0000 (19:51 -0600)]
fix match_partial_string, compare_pstr_to_string (#1451)

4 years agoremove redundant register assignments in numeric comparisons (#1438, #1448)
Mark Thom [Fri, 29 Apr 2022 07:25:36 +0000 (01:25 -0600)]
remove redundant register assignments in numeric comparisons (#1438, #1448)

4 years agoremove redundant skip_stub_try_me_else condition (#1444)
Mark Thom [Fri, 29 Apr 2022 01:25:09 +0000 (19:25 -0600)]
remove redundant skip_stub_try_me_else condition (#1444)

4 years agoMerge pull request #1436 from triska/must_be_term
Mark Thom [Tue, 26 Apr 2022 19:31:43 +0000 (13:31 -0600)]
Merge pull request #1436 from triska/must_be_term

ADDED: can_be(term, ...) and must_be(term, ...)

4 years agoreplace SliceDeque with VecDeque
Mark Thom [Tue, 26 Apr 2022 04:55:28 +0000 (22:55 -0600)]
replace SliceDeque with VecDeque

4 years agocatch existence_error exceptions from top-level calls to attribute_goals/3 (#1432)
Mark Thom [Mon, 25 Apr 2022 02:59:00 +0000 (20:59 -0600)]
catch existence_error exceptions from top-level calls to attribute_goals/3 (#1432)

4 years agounify structures from left to right (#1396)
Mark Thom [Sat, 23 Apr 2022 01:00:42 +0000 (19:00 -0600)]
unify structures from left to right (#1396)

4 years agoupdate to crossterm 0.20.0 (#1439)
Mark Thom [Fri, 22 Apr 2022 00:41:07 +0000 (18:41 -0600)]
update to crossterm 0.20.0 (#1439)

4 years agoADDED: can_be(term, ...) and must_be(term, ...)
Markus Triska [Wed, 20 Apr 2022 18:41:11 +0000 (20:41 +0200)]
ADDED: can_be(term, ...) and must_be(term, ...)

This terminology is a bit harder to understand than that of the other
type checks.

Scryer Prolog comprises two individually consistent but incompatible
notions of terms, namely terms and rational trees (which are also
called "cyclic terms"). This leads to a confusion in terminology,
because cyclic terms are not terms in the former sense even though
they also contain the word "term" in their name.

This terminological confusion is not restricted to terms: We also find
it for example in the notion of lists. Lists are defined inductively:

    - The empty list (written as "" or [], called 'nil') is a list.
    - A term with principal functor '.'/2 is a list if its second argument
      is a list.

Note that a list may contain cyclic terms as elements, and still be
called a list. However, if we post:

    ?- Ls = [_|Ls].

then Ls is not a list, because it does not fit the inductive
definition. Still, it is sometimes referred to as a "cyclic list" or
"circular list", even though it is not a list. Even Prolog
implementors that aim for strict conformance to the Prolog ISO
standard and are deeply familiar with the standard use this
terminology when talking about such terms, see for example:

    https://github.com/ichiban/prolog/pull/198

Consequently, must_be(list, Ls) raises a *type error* in this case.

Terms are distinguished from cyclic terms completely analogously. This
leads to the counterintuitive consequence that *cyclic lists are not
terms*. The reason for this apparent contradiction in terminology is
the mutual incompatibility of different notions of terms. The notion
of "term" precludes rational trees, similar to the notion of "list"
which precludes cyclic lists.

We therefore introduce:

    * must_be(term, Term)
      - raises an instantiation error if Term contains variables (since
        it could still become a rational tree)
      - raises a type error if Term is a rational tree

    * can_be(term, Term)
      - raises a type error if Term is a rational tree

Note that using the notion of "cyclic term" and "acyclic term" in this
terminology would not be a good idea, because this confusion is
precisely what we want to eliminate: must_be(term, Term) should be
usable as a test that reliably determines whether Term can be treated
as a term with the logical properties we expect from terms.

This addresses #1428.

4 years agovery minor optimizations
Mark Thom [Mon, 18 Apr 2022 02:10:13 +0000 (20:10 -0600)]
very minor optimizations

4 years agomark unsafe variables and substitute temporary variables in is/2 when appropriate...
Mark Thom [Sun, 17 Apr 2022 23:33:09 +0000 (17:33 -0600)]
mark unsafe variables and substitute temporary variables in is/2 when appropriate (#1430)

4 years agofix panic caused by jmp offset off by one error (#1429)
Mark Thom [Sun, 17 Apr 2022 18:19:48 +0000 (12:19 -0600)]
fix panic caused by jmp offset off by one error (#1429)

4 years agoavoid writing chars to the atom table in several places
Mark Thom [Sun, 17 Apr 2022 01:57:26 +0000 (19:57 -0600)]
avoid writing chars to the atom table in several places

4 years agoMerge pull request #1421 from gruhn/master
Mark Thom [Sat, 16 Apr 2022 17:11:33 +0000 (11:11 -0600)]
Merge pull request #1421 from gruhn/master

push Docker image on new release

4 years agofix comparisons to partial string tails (#1420)
Mark Thom [Fri, 15 Apr 2022 04:14:23 +0000 (22:14 -0600)]
fix comparisons to partial string tails (#1420)

4 years agopush Docker image on new release
Niklas Gruhn [Thu, 14 Apr 2022 14:33:57 +0000 (16:33 +0200)]
push Docker image on new release

Setup GitHub action which automatically builds and pushes Docker
images, when new release tags are created.

4 years agoinstantiate Module in definition of retract/1 (#1392)
Mark Thom [Thu, 14 Apr 2022 02:31:16 +0000 (20:31 -0600)]
instantiate Module in definition of retract/1 (#1392)

4 years agomark cells that are about to be iterated in the stackful iterator (#1418)
Mark Thom [Wed, 13 Apr 2022 04:51:20 +0000 (22:51 -0600)]
mark cells that are about to be iterated in the stackful iterator (#1418)

4 years agouse '$call' all throughout setup_call_cleanup/3
Mark Thom [Mon, 11 Apr 2022 23:24:00 +0000 (17:24 -0600)]
use '$call' all throughout setup_call_cleanup/3

4 years agodereference head of list in is_continuable (#1417)
Mark Thom [Mon, 11 Apr 2022 23:01:47 +0000 (17:01 -0600)]
dereference head of list in is_continuable (#1417)

4 years agostop detecting cycles in compare_pstr_to_string
Mark Thom [Mon, 11 Apr 2022 01:46:34 +0000 (19:46 -0600)]
stop detecting cycles in compare_pstr_to_string

4 years agomark variable referents in stackful iterator, fix tests (#1408)
Mark Thom [Sun, 10 Apr 2022 20:17:33 +0000 (14:17 -0600)]
mark variable referents in stackful iterator, fix tests (#1408)

4 years agoMerge pull request #1415 from wkral/set_output-error
Mark Thom [Sun, 10 Apr 2022 20:11:43 +0000 (14:11 -0600)]
Merge pull request #1415 from wkral/set_output-error

Fix reported source for set_output/1 error (#1407)

4 years agoFix reported source for set_output/1 error (#1407)
William Kral [Sun, 10 Apr 2022 19:00:59 +0000 (12:00 -0700)]
Fix reported source for set_output/1 error (#1407)

4 years agoprint dot after errors, fix tests (#1408)
Mark Thom [Sun, 10 Apr 2022 16:15:00 +0000 (10:15 -0600)]
print dot after errors, fix tests (#1408)

4 years agofix tests, use '$first_answer' to print indentation before errors (#1408)
Mark Thom [Sun, 10 Apr 2022 02:32:52 +0000 (20:32 -0600)]
fix tests, use '$first_answer' to print indentation before errors (#1408)

4 years agoprint errors as goals (#1408)
Mark Thom [Sat, 9 Apr 2022 20:01:48 +0000 (14:01 -0600)]
print errors as goals (#1408)

4 years agounmark dereferenced cells in term_variables/2 (#1412)
Mark Thom [Sat, 9 Apr 2022 18:15:46 +0000 (12:15 -0600)]
unmark dereferenced cells in term_variables/2 (#1412)

4 years agodereference bindings returned by stackful iterator (#1410, #1411)
Mark Thom [Sat, 9 Apr 2022 17:47:54 +0000 (11:47 -0600)]
dereference bindings returned by stackful iterator (#1410, #1411)

4 years agodeduplicate variable list in term_variables/2 (#1409)
Mark Thom [Sat, 9 Apr 2022 03:18:59 +0000 (21:18 -0600)]
deduplicate variable list in term_variables/2 (#1409)

4 years agothrow errors on cyclic terms when evaluating is/2 expressions
Mark Thom [Fri, 8 Apr 2022 05:06:58 +0000 (23:06 -0600)]
throw errors on cyclic terms when evaluating is/2 expressions

4 years agofix loop in stackful iterator (#1405, #1384)
Mark Thom [Fri, 8 Apr 2022 02:48:40 +0000 (20:48 -0600)]
fix loop in stackful iterator (#1405, #1384)

4 years agodetect immediately cyclic lists (#1384)
Mark Thom [Thu, 7 Apr 2022 04:53:48 +0000 (22:53 -0600)]
detect immediately cyclic lists (#1384)

4 years agorestore correct order to term_variables/2 (#1400, #1401)
Mark Thom [Wed, 6 Apr 2022 14:39:16 +0000 (08:39 -0600)]
restore correct order to term_variables/2 (#1400, #1401)

4 years agolimit use of stackless iterator to test suite
Mark Thom [Wed, 6 Apr 2022 03:02:39 +0000 (21:02 -0600)]
limit use of stackless iterator to test suite

4 years agoadd forwarding bit to all heap cells (#1384)
Mark Thom [Wed, 6 Apr 2022 02:13:17 +0000 (20:13 -0600)]
add forwarding bit to all heap cells (#1384)

4 years agoallocate floats in dedicated buffer
Mark Thom [Tue, 5 Apr 2022 05:56:30 +0000 (23:56 -0600)]
allocate floats in dedicated buffer

4 years agomake marker into an iterators, recover post_order_iterator
Mark Thom [Sun, 3 Apr 2022 04:45:10 +0000 (22:45 -0600)]
make marker into an iterators, recover post_order_iterator

4 years agoremoval of old stackless iterator, implementation of new more faithful one
Mark Thom [Sat, 2 Apr 2022 23:30:04 +0000 (17:30 -0600)]
removal of old stackless iterator, implementation of new more faithful one

4 years agoMerge pull request #1395 from wkral/fix-test-indentation
Mark Thom [Tue, 5 Apr 2022 16:58:12 +0000 (10:58 -0600)]
Merge pull request #1395 from wkral/fix-test-indentation

Fix indentation before false in tests (#676)

4 years agoFix indentation before false in tests (#676)
William Kral [Tue, 5 Apr 2022 06:58:20 +0000 (23:58 -0700)]
Fix indentation before false in tests (#676)

4 years agoindent plain false (#676)
Mark Thom [Mon, 4 Apr 2022 02:22:44 +0000 (20:22 -0600)]
indent plain false (#676)

4 years agoMerge pull request #1386 from triska/better_call_nth
Mark Thom [Sun, 3 Apr 2022 07:38:37 +0000 (01:38 -0600)]
Merge pull request #1386 from triska/better_call_nth

ENHANCED: more memory efficient call_nth/2 (#1264)

4 years agocompare complete strings to one another in write_literal_to_var (#1388)
Mark Thom [Sun, 3 Apr 2022 07:37:19 +0000 (01:37 -0600)]
compare complete strings to one another in write_literal_to_var (#1388)

4 years agoENHANCED: more memory efficient call_nth/2 (#1264)
Markus Triska [Sat, 2 Apr 2022 08:31:56 +0000 (10:31 +0200)]
ENHANCED: more memory efficient call_nth/2 (#1264)

I hope that this will allow more extensive tests of Scryer Prolog. Enjoy!

4 years agodon't mark forwarded refs in stackless iterator/marker (#1384)
Mark Thom [Sat, 2 Apr 2022 07:29:51 +0000 (01:29 -0600)]
don't mark forwarded refs in stackless iterator/marker (#1384)

4 years agobe aware of temporary variables of stackless iterator in term_variables (#1383)
Mark Thom [Fri, 1 Apr 2022 00:18:04 +0000 (18:18 -0600)]
be aware of temporary variables of stackless iterator in term_variables (#1383)

4 years agoMerge pull request #1381 from wkral/build-fmt-error
Mark Thom [Thu, 31 Mar 2022 23:59:02 +0000 (17:59 -0600)]
Merge pull request #1381 from wkral/build-fmt-error

Improve rustfmt missing error during build (#1379)

4 years agoImprove rustfmt missing error during build (#1379)
William Kral [Wed, 30 Mar 2022 21:26:35 +0000 (14:26 -0700)]
Improve rustfmt missing error during build (#1379)

4 years agoMerge pull request #1380 from triska/as_is
Mark Thom [Wed, 30 Mar 2022 19:56:25 +0000 (13:56 -0600)]
Merge pull request #1380 from triska/as_is

as --> is

4 years agoas --> is
Markus Triska [Wed, 30 Mar 2022 19:33:46 +0000 (21:33 +0200)]
as --> is

4 years agofix dif/2 crash (#1378)
Mark Thom [Wed, 30 Mar 2022 00:39:45 +0000 (18:39 -0600)]
fix dif/2 crash (#1378)

4 years agoMerge pull request #1373 from aarroyoc/http-open
Mark Thom [Tue, 29 Mar 2022 05:10:08 +0000 (23:10 -0600)]
Merge pull request #1373 from aarroyoc/http-open

Add Hyper based `http_open/3`

4 years agoprint closed stream handle as '$dropped_value' (#1376)
Mark Thom [Tue, 29 Mar 2022 01:03:28 +0000 (19:03 -0600)]
print closed stream handle as '$dropped_value' (#1376)

4 years agodereference numbervars terms (#1377)
Mark Thom [Tue, 29 Mar 2022 00:58:38 +0000 (18:58 -0600)]
dereference numbervars terms (#1377)

4 years agoAdd close handling of http stream
Adrián Arroyo Calle [Mon, 28 Mar 2022 19:04:46 +0000 (21:04 +0200)]
Add close handling of http stream

4 years agohttp_open/3 try_or_throw
Adrián Arroyo Calle [Sun, 27 Mar 2022 12:23:14 +0000 (14:23 +0200)]
http_open/3 try_or_throw

4 years agohttp_open/3 with headers and data
Adrián Arroyo Calle [Sun, 27 Mar 2022 12:18:38 +0000 (14:18 +0200)]
http_open/3 with headers and data

4 years agohttp_open/3 with method option
Adrián Arroyo Calle [Sat, 19 Mar 2022 21:53:24 +0000 (22:53 +0100)]
http_open/3 with method option

4 years agoextend small_letter_char! to include all non-uppercase letters (#1364)
Mark Thom [Sun, 27 Mar 2022 19:34:29 +0000 (13:34 -0600)]
extend small_letter_char! to include all non-uppercase letters (#1364)

4 years agoStream::close() should close file handles (#1374)
Mark Thom [Sun, 27 Mar 2022 19:08:43 +0000 (13:08 -0600)]
Stream::close() should close file handles (#1374)

4 years agouse ryu to print floats with a modification for compatible syntax (#1368, #1372)
Mark Thom [Sun, 27 Mar 2022 17:28:10 +0000 (11:28 -0600)]
use ryu to print floats with a modification for compatible syntax (#1368, #1372)

4 years agofix char comparison misordering (#1371)
Mark Thom [Sun, 27 Mar 2022 03:44:37 +0000 (21:44 -0600)]
fix char comparison misordering (#1371)

4 years agoretrieve F64 behind Cons tags properly (#1369)
Mark Thom [Sun, 27 Mar 2022 03:18:07 +0000 (21:18 -0600)]
retrieve F64 behind Cons tags properly (#1369)

4 years agoMerge pull request #1370 from triska/files_must_be_chars
Mark Thom [Sat, 26 Mar 2022 18:30:58 +0000 (12:30 -0600)]
Merge pull request #1370 from triska/files_must_be_chars

ENHANCED: use newly available must_be(chars, ...), which is very fast

4 years agoENHANCED: use newly available must_be(chars, ...), which is very fast
Markus Triska [Sat, 26 Mar 2022 17:59:11 +0000 (18:59 +0100)]
ENHANCED: use newly available must_be(chars, ...), which is very fast

4 years agofix functor/3 arity check (#1366)
Mark Thom [Sat, 26 Mar 2022 00:07:22 +0000 (18:07 -0600)]
fix functor/3 arity check (#1366)

4 years agoadvance arg in arithmetic comparison code (#1367)
Mark Thom [Fri, 25 Mar 2022 23:30:47 +0000 (17:30 -0600)]
advance arg in arithmetic comparison code (#1367)

4 years agodetect float rounding overflows (#1365)
Mark Thom [Thu, 24 Mar 2022 16:25:42 +0000 (10:25 -0600)]
detect float rounding overflows (#1365)

4 years agorecognize missing syntax errors (#1354, #1361)
Mark Thom [Wed, 23 Mar 2022 04:48:51 +0000 (22:48 -0600)]
recognize missing syntax errors (#1354, #1361)

4 years agocompare TypedArenaPtr<T> by value not pointer (#1362)
Mark Thom [Tue, 22 Mar 2022 06:55:44 +0000 (00:55 -0600)]
compare TypedArenaPtr<T> by value not pointer (#1362)

4 years agouse Rust's native UTF-8 functions (#1355)
Mark Thom [Sat, 19 Mar 2022 22:52:27 +0000 (16:52 -0600)]
use Rust's native UTF-8 functions (#1355)

4 years agocorrect float version of sign/1 (#1360)
Mark Thom [Sat, 19 Mar 2022 01:00:53 +0000 (19:00 -0600)]
correct float version of sign/1 (#1360)

4 years agoaccept remaining UTF-8 codepoints as alphabetic characters (#1355)
Mark Thom [Fri, 18 Mar 2022 23:49:54 +0000 (17:49 -0600)]
accept remaining UTF-8 codepoints as alphabetic characters (#1355)

4 years agoprint most characters directly ((#1355)
Mark Thom [Fri, 18 Mar 2022 00:43:30 +0000 (18:43 -0600)]
print most characters directly ((#1355)

4 years agocheck self.ignore_ops and max_depth in print_rational (#1359)
Mark Thom [Fri, 18 Mar 2022 00:08:30 +0000 (18:08 -0600)]
check self.ignore_ops and max_depth in print_rational (#1359)

4 years agoremove pstr offsets unconditionally from printer iteration stack, deal with fallout...
Mark Thom [Thu, 17 Mar 2022 01:11:39 +0000 (19:11 -0600)]
remove pstr offsets unconditionally from printer iteration stack, deal with fallout after the fact (#1357)

4 years agoimprove length/2 (#1325)
Mark Thom [Wed, 16 Mar 2022 00:43:57 +0000 (18:43 -0600)]
improve length/2 (#1325)

4 years agoprepare for publishing to crates.io (#1335)
Mark Thom [Tue, 15 Mar 2022 05:31:50 +0000 (23:31 -0600)]
prepare for publishing to crates.io (#1335)

4 years agoadd (:) meta-predicate argument indicator (#1302)
Mark Thom [Sun, 13 Mar 2022 18:53:31 +0000 (12:53 -0600)]
add (:) meta-predicate argument indicator (#1302)

4 years agoderefence target variable in check_sort_errors (#1350)
Mark Thom [Sun, 13 Mar 2022 19:54:39 +0000 (13:54 -0600)]
derefence target variable in check_sort_errors (#1350)

4 years agothrow errors on cycles in sort/2 and keysort/2 (#1350 and #1351)
Mark Thom [Sun, 13 Mar 2022 16:48:03 +0000 (10:48 -0600)]
throw errors on cycles in sort/2 and keysort/2 (#1350 and #1351)

4 years agopoint code index to switch_on_term after appending indexed clause to single-clause...
Mark Thom [Sun, 13 Mar 2022 03:12:28 +0000 (20:12 -0700)]
point code index to switch_on_term after appending indexed clause to single-clause predicate (#1346)

4 years agoMerge pull request #1349 from Skgland/min-rust-version
Mark Thom [Sat, 12 Mar 2022 20:12:03 +0000 (13:12 -0700)]
Merge pull request #1349 from Skgland/min-rust-version

Set minimum rust version in Cargo.toml (Attempt 2)

4 years agoadd a CI job to verify msrv is still correct
Skgland [Sat, 12 Mar 2022 18:02:34 +0000 (19:02 +0100)]
add a CI job to verify msrv is still correct

4 years agoadd min rust version
Skgland [Sat, 12 Mar 2022 17:57:33 +0000 (18:57 +0100)]
add min rust version

was proposed in https://github.com/mthom/scryer-prolog/issues/1335#issuecomment-1062039516 and got positive feedback

(cherry picked from commit fcfa3beaa32f23f6c08fcc7d4f3755b10bc62431)

4 years agoMerge pull request #1348 from mthom/revert-1347-min-rust-version
Mark Thom [Sat, 12 Mar 2022 18:10:25 +0000 (11:10 -0700)]
Merge pull request #1348 from mthom/revert-1347-min-rust-version

Revert "Set minimum rust version in Cargo.toml"

4 years agoRevert "Set minimum rust version in Cargo.toml" revert-1347-min-rust-version origin/revert-1347-min-rust-version
Mark Thom [Sat, 12 Mar 2022 18:10:17 +0000 (11:10 -0700)]
Revert "Set minimum rust version in Cargo.toml"

4 years agoMerge pull request #1347 from Skgland/min-rust-version
Mark Thom [Sat, 12 Mar 2022 18:07:03 +0000 (11:07 -0700)]
Merge pull request #1347 from Skgland/min-rust-version

Set minimum rust version in Cargo.toml

4 years agoadd a CI job to verify msrv is still correct
Skgland [Sat, 12 Mar 2022 18:02:34 +0000 (19:02 +0100)]
add a CI job to verify msrv is still correct

4 years agoadd min rust version
Skgland [Sat, 12 Mar 2022 17:57:33 +0000 (18:57 +0100)]
add min rust version

was proposed in https://github.com/mthom/scryer-prolog/issues/1335#issuecomment-1062039516 and got positive feedback

4 years agoMerge pull request #1342 from wkral/no-add-history
Mark Thom [Sat, 12 Mar 2022 01:25:47 +0000 (18:25 -0700)]
Merge pull request #1342 from wkral/no-add-history

Add --no-add-history flag

4 years agoAdd --no-add-history flag
William Kral [Fri, 11 Mar 2022 05:48:41 +0000 (21:48 -0800)]
Add --no-add-history flag

Flag prevents the input stream from saving terms to ~/.scryer_history
when set. Use the flag when running tests to increase test isolation.

4 years agoprint rationals that are integers as integers (#663)
Mark Thom [Thu, 10 Mar 2022 04:24:16 +0000 (21:24 -0700)]
print rationals that are integers as integers (#663)