Mark Thom
1ef681bd21
remove Term
2025-07-07 21:54:08 -07:00
Mark Thom
1cf5de8f5c
Merge pull request #2970 from notoria/clpz
...
Make `(mod)/2` stronger in CLP(Z)
2025-06-16 21:02:38 -07:00
Markus Triska
17377064cf
use nonterminal indicators, correct meta_predicate/1 for higher-order phrase//N
...
Noted by @UWN in https://github.com/mthom/scryer-prolog/discussions/2872 .
Many thanks!
2025-06-14 22:47:29 +02:00
notoria
4b480a7eab
Strengthened (mod)/2 in CLP(Z)
...
?- 8 #= -1 mod #Y.
clpz:(Y in 9..sup), clpz:(-1 mod#Y#=8). % unexpected
Expected: Y = 9
?- 8 #= -12 mod #Y.
clpz:(Y in 9..sup), clpz:(-12 mod#Y#=8). % unexpected
Expected `Y` with finite domain
2025-05-25 13:39:31 +02:00
notoria
4a6f86591c
Strengthened (mod)/2 in CLP(Z)
...
?- 0 #= 2 mod #Y.
clpz:(Y in inf.. -1\/1..sup), clpz:(2 mod#Y#=0). % unexpected
Expected: clpz:(Y in-2.. -1\/1..2), clpz:(2 mod Y#=0)
2025-05-25 13:38:56 +02:00
notoria
37ac5bb3c1
Strengthened (mod)/2 in CLP(Z)
...
?- Z = 8, X = 9, #Z #= #X mod #Y.
Z = 8, X = 9, clpz:(Y in 9..sup), clpz:(9 mod#Y#=8). % unexpected
Expected: false
2025-05-25 13:37:28 +02:00
Dan Rose
b767e4de25
xor is not a standard operator
2025-05-13 20:32:59 -05:00
Mark Thom
a42a88a2c9
Merge pull request #2802 from adri326/null-stream-safety
...
Fix UB when interacting with Stream::Null(_)
2025-05-01 17:35:30 -07:00
Mark Thom
90f4716cc3
Merge branch 'null-stream-safety' of https://github.com/adri326/scryer-prolog into adri326-null-stream-safety
2025-04-29 23:32:48 -07:00
Mark Thom
3a6289324e
Merge pull request #2901 from matteob8/patch-1
...
Update http_server.pl
2025-04-29 21:41:07 -07:00
Mark Thom
f496abbbef
use loader:strip_subst_module/4 in second module check of retract/1 ( #2891 , #2893 )
2025-04-22 23:28:19 -07:00
matteob8
00a44921db
Update http_server.pl
...
changed top/0 to the more meaningful run/0 name.
2025-04-21 20:54:43 +02:00
matteob8
d79bc199b3
Update http_server.pl
...
Avoid overwriting of predicate and made explicit reference to the loading of library(http/http_server).
2025-04-21 19:13:20 +02:00
Markus Triska
ba9fed3eae
generalize read_from_chars/2 and read_term_from_chars/3 to allow instantiated Term
...
This addresses part of #2871 , raised by @haijinSk. Many thanks!
2025-04-10 08:18:23 +02:00
Markus Triska
14c8fc3e34
move ~w to least prominent position, point to more suitable specifiers
...
In particular, "~q" is a safe better choice.
2025-04-05 10:01:22 +02:00
Markus Triska
3d60094330
ENHANCED: format specifier ~w more faithfully emulates write/1
...
In particular, variables now start with "_".
Example:
?- format("~w", [X]).
%@ _A true.
Found thanks to a discussion initiated by @haijinSk:
https://github.com/mthom/scryer-prolog/discussions/2863
2025-04-05 09:58:06 +02:00
Aman Verma
a45a1f6197
Use backticks when referencing predicate in docs.
...
Trivial change but this prevents the HTML output from being erroneously italicized.
2025-03-27 18:56:38 -05:00
Markus Triska
57bf1ec39b
ADDED: type pair
2025-03-08 14:42:48 +01:00
Markus Triska
32d91449b5
ADDED: call_with_error_context/2
...
See https://github.com/mthom/scryer-prolog/discussions/2839 for more information.
2025-03-08 09:12:17 +01:00
Markus Triska
b8526e0510
FIXED: portray_clause/1 for numbers
2025-02-28 08:41:19 +01:00
Markus Triska
2d4fcf9714
correct handling of floats with N digits (~f and ~Nf)
...
This addresses #2771 . Many thanks to @tmerr for reporting the issue!
The code was posted by @UWN in:
https://github.com/mthom/scryer-prolog/discussions/2805
Many thanks! With additional inputs by @adri326 and @notoria, who also
posted interesting approaches which could help to increase precision
in cases that are currently not ideally handled. Thank you all!
Please see the issue and discussion for more information.
2025-02-28 08:40:53 +01:00
Mark Thom
c9a0f3332e
Merge pull request #2792 from triska/must_be_chars
...
FIXED: instantiation and type check for string arguments
2025-02-27 21:26:40 -08:00
Emilie Burgun
f45b0bcfe8
Remove redundant alias resolution in at_end_of_stream/1, add corresponding tests for null streams
...
Also fixed at_end_of_stream/0 leaving a choicepoint.
2025-02-07 15:05:01 +01:00
Markus Triska
bc0f614bf9
FIXED: instantiation and type check for string arguments
...
This addresses #2790 .
The issue first appeared in an example reported by @ak-1 in #2788 , and
was successfully analyzed by @flexoron. Many thanks!
2025-01-23 20:18:55 +01:00
Emilie Burgun
b76bdd75e4
Fix #2725 by calling load_context/1 in the unspecified branch of strip_module/3
...
This fixes #2725 , by making it so that `strip_module(Pred, M, P), call(M:P)`
doesn't throw an `instanciation_error` when `Pred` isn't in the form `module:predicate`.
Now, `strip_module(hello, M, P)` will call `load_context(M)`, which unifies `M`
with the topmost module (or `user`).
Two new test cases are added: issue2725.pl, which tests the minimal case id(X) --> X.
and the strip_module(P, M, _), call(M:P) scenario, and module_resolution,
which tests the behavior of strip_module in a few scenarios.
2025-01-12 14:08:28 +01:00
Mark Thom
2856cc4371
Merge pull request #2742 from triska/clpb
...
Revert "FIXED: CLP(B): Delay BDD restriction until after the instantiation"
2025-01-04 13:26:08 -07:00
Mark Thom
2257503951
Merge pull request #2743 from triska/crypto
...
atom --> string
2025-01-04 13:23:59 -07:00
Markus Triska
28c386422b
state when the predicates are true
...
"returns" is not used in this way in logic programming. "return"
suggests that something went away and is now coming back, but this is
never the case in these situations. The arguments may be variables or
also fully known at the time of the call in most cases.
2025-01-02 18:54:27 +01:00
Markus Triska
edaba024b2
atom --> string
2025-01-02 18:30:29 +01:00
Markus Triska
333d6740ae
Revert "FIXED: CLP(B): Delay BDD restriction until after the instantiation."
...
This reverts commit e185b626bd .
This change is now no longer needed, and the underlying issue is
apparently somewhere else entirely. See the description at:
https://github.com/mthom/scryer-prolog/issues/2732
Current master behaves differently from Scryer as it was at
099d9aaca6 (i.e., preceding
the commit that is now being reverted), even on the same file.
For an example, see:
https://github.com/triska/scryer-prolog/commit/dd41176b97d8369c3bb7de1c9932a9c3d10a0466
Scryer now works as expected, and compatibly with SICStus. We still
need to find out what fixed the root cause of this issue.
2025-01-02 18:02:38 +01:00
Mark Thom
d57f871a12
Merge pull request #2681 from hurufu/remove-dcgs-that-have-failed-to-expand
...
Remove DCGs that have thrown an exception during term expansion
2024-12-25 14:29:38 -07:00
Aleksy Grabowski
a599a11169
Remove DCGs that have thrown an exception during term expansion
...
Some DCG constructs aren't supported and can't be expanded, here we
remove offending DCG rule and don't compile it at all – in a similar
fashion to what we do when incorrect goal was found – whole predicate
isn't getting compiled.
Fixes #2675
2024-12-22 10:37:32 +01:00
Mark Thom
b7943837a0
Merge pull request #2714 from triska/graphic_token
...
prevent accidental amalgamation of graphic token chars in output
2024-12-20 18:42:09 -07:00
Mark Thom
e01a4cdc85
Merge pull request #2717 from jasagredo/js/small-doc
...
Ensure max_assoc/3 is shown as documented
2024-12-20 18:41:51 -07:00
Mark Thom
555dff5bad
leave variable modules uninstantiated ( #2685 )
2024-12-19 20:20:29 -08:00
Javier Sagredo
75ac3fffae
Ensure max_assoc/3 is shown as documented
2024-12-18 01:02:45 +01:00
Markus Triska
8dc80b815f
use round brackets for goals involving operators
...
Examples:
?- portray_clause(((+) :- a=b,(-))).
(+) :-
a=b,
(-).
true.
?- portray_clause((a :- (b :- c))).
a :-
(b:-c).
true.
This addresses #2715 .
Currently, more round brackets than needed are emitted. Ideally, a
better approach to solve the issue here and also in toplevel.pl is
found in the future.
2024-12-17 22:51:47 +01:00
Markus Triska
6175e334a5
prevent accidental amalgamation of graphic token chars in output
...
This addresses #2713 . Many thanks to @notoria for reporting this
excellent case!
Example:
?- portray_clause(A = @).
A= @ .
true.
At other positions the now inserted space is unnecessary, as in:
?- portray_clause((head:- @,b)).
head :-
@ ,
b.
true.
The toplevel has a similar issue:
?- C = # ; false.
C = # |<-- cursor is here; redundant space after #
There may be a way to solve this issue for all cases like this.
2024-12-17 20:06:52 +01:00
Mark Thom
a9a77779e3
Merge pull request #2689 from triska/weighted_maybe
...
introduce and use weighted_maybe/2
2024-12-13 21:38:47 -07:00
Mark Thom
5f035ec6ad
Merge pull request #2690 from notoria/next
...
Add '$random_integer'/3
2024-12-13 21:38:32 -07:00
Mark Thom
9eef380764
Merge pull request #2696 from jasonhemann/patch-3
...
s/performance characters/performance characteristics/
2024-12-13 21:37:56 -07:00
Mark Thom
ce6a0a1541
Merge pull request #2698 from jasonhemann/patch-5
...
Documentation for read/2
2024-12-13 20:02:50 -07:00
Mark Thom
b919a39b96
Merge pull request #2703 from jasonhemann/patch-6
...
s/avaibale/available/
2024-12-13 20:02:21 -07:00
Jason Hemann
a15b2789e2
s/avaibale/available/
...
Quick typo fix to docs.
2024-12-13 13:41:05 -05:00
Jason Hemann
2ff50f06bc
Update builtins.pl
...
s/compund/compound/
2024-12-11 08:05:03 -05:00
Jason Hemann
e219e1c483
Update builtins.pl
...
Simplifying docstring.
2024-12-11 05:46:28 -05:00
Jason Hemann
eef9f74a68
Documentation for read/2
...
Mirrored the wording in the docstrings for `read/1` and `read_term/3`.
2024-12-10 21:18:09 -05:00
Jason Hemann
eae1f53846
"bound to an atom"
...
Quick typo.
2024-12-10 21:07:48 -05:00
Jason Hemann
48a42ae140
s/performance characters/performance characteristics/
...
Small typo fix in docs.
2024-12-10 20:56:44 -05:00
Markus Triska
abe1f37167
introduce and use weighted_maybe/2
...
Many thanks to @hurufu for the very nice definition!
This is until library(random) provides this functionality,
and a good name is found for it. See #2670 .
2024-12-08 21:33:03 +01:00