From: Markus Triska Date: Thu, 3 Aug 2023 20:27:13 +0000 (+0200) Subject: add character_si/1 and use it to correct chars_si/1 X-Git-Tag: v0.9.2~14^2 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=8073a4ba872303ad4abf745e5c20212836db8c6c;p=scryer-prolog.git add character_si/1 and use it to correct chars_si/1 This addresses #1947. --- diff --git a/src/lib/si.pl b/src/lib/si.pl index 4c3b6c65..910cad5b 100644 --- a/src/lib/si.pl +++ b/src/lib/si.pl @@ -36,6 +36,7 @@ integer_si/1, atomic_si/1, list_si/1, + character_si/1, chars_si/1, dif_si/2]). @@ -62,9 +63,15 @@ list_si(L0) :- ; throw(error(instantiation_error, list_si/1)) ). -chars_si(Cs) :- - list_si(Cs), - '$is_partial_string'(Cs). +character_si(Ch) :- + functor(Ch,Ch,0), + atom(Ch), + atom_length(Ch,1). + +chars_si(Chs) :- + \+ \+ length(Chs,_), + \+ ( once(length(Chs,_)), member(Ch,Chs), nonvar(Ch), \+ character_si(Ch) ), + \+ ( member(Ch,Chs), \+ character_si(Ch) ). % for the instantiation error dif_si(X, Y) :- X \== Y,