Number::Float(f) => Number::Float(OrderedFloat(f.signum())),
_ => {
if self.is_positive() {
- if self.is_zero() {
- Number::Fixnum(Fixnum::build_with(0))
- } else {
- Number::Fixnum(Fixnum::build_with(1))
- }
+ if self.is_zero() {
+ Number::Fixnum(Fixnum::build_with(0))
+ } else {
+ Number::Fixnum(Fixnum::build_with(1))
+ }
} else if self.is_negative() {
Number::Fixnum(Fixnum::build_with(-1))
} else {
vars_remove_goal([], _).
vars_remove_goal([Var|Vars], Goal0) :-
- get_atts(Var, +dif(Goals0)),
- remove_goal(Goals0, Goal0, Goals),
- ( Goals = [] ->
- put_atts(Var, -dif(_))
- ; put_atts(Var, +dif(Goals))
+ ( get_atts(Var, +dif(Goals0)) ->
+ remove_goal(Goals0, Goal0, Goals),
+ ( Goals = [] ->
+ put_atts(Var, -dif(_))
+ ; put_atts(Var, +dif(Goals))
+ )
+ ; true
),
vars_remove_goal(Vars, Goal0).
\+ E=[]
)).
+% https://github.com/mthom/scryer-prolog/issues/2175
+test("scryer-prolog#2175",(
+ dif(A,B),
+ A=_C*[],
+ A=[]*D*B,D=[]
+)).
+
main :-
findall(test(Name, Goal), test(Name, Goal), Tests),
run_tests(Tests, Failed),