From 06b81914ebe14d39e5189dc62bef0c510e15203c Mon Sep 17 00:00:00 2001 From: Simon Forman Date: Mon, 15 Jul 2019 23:02:08 -0700 Subject: [PATCH] Change comparison ops to not use CLP(FD). --- thun/defs.txt | 1 + thun/thun.pl | 27 ++++++++++++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/thun/defs.txt b/thun/defs.txt index e15f6b2..c2c4a5c 100644 --- a/thun/defs.txt +++ b/thun/defs.txt @@ -1,3 +1,4 @@ +-- == 1 - ++ == 1 + anamorphism == [pop []] swap [dip swons] genrec app1 == grba infrst diff --git a/thun/thun.pl b/thun/thun.pl index ebc8b84..b558d31 100644 --- a/thun/thun.pl +++ b/thun/thun.pl @@ -102,7 +102,7 @@ func(-, [A, B|S], [B - A|S]). func(*, [A, B|S], [B * A|S]). func(/, [A, B|S], [B / A|S]). -func(=, [A|S], [B|S]) :- B is A. +func(calc, [A|S], [B|S]) :- B is A. % func(pm, [A, B|S], [C, D|S]) :- C #= A + B, D #= B - A. % func(pm, [A, B|S], [B + A, B - A|S]). @@ -127,12 +127,25 @@ func(tuck, [A, B|S], [A, B, A|S]). func(rollup, Si, So) :- func(rolldown, So, Si). func(uncons, Si, So) :- func(cons, So, Si). -func(>, [A, B|S], [T|S]) :- B #> A #<==> R, r_truth(R, T). -func(<, [A, B|S], [T|S]) :- B #< A #<==> R, r_truth(R, T). -func(=, [A, B|S], [T|S]) :- B #= A #<==> R, r_truth(R, T). -func(>=, [A, B|S], [T|S]) :- B #>= A #<==> R, r_truth(R, T). -func(<=, [A, B|S], [T|S]) :- B #=< A #<==> R, r_truth(R, T). -func(<>, [A, B|S], [T|S]) :- B #\= A #<==> R, r_truth(R, T). +func(>, [A, B|S], [ true|S]) :- B > A. +func(>, [A, B|S], [false|S]) :- \+ B > A. +func(<, [A, B|S], [ true|S]) :- B < A. +func(<, [A, B|S], [false|S]) :- \+ B < A. +func(>=, [A, B|S], [ true|S]) :- B >= A. +func(>=, [A, B|S], [false|S]) :- \+ B >= A. +func(<=, [A, B|S], [ true|S]) :- B =< A. +func(<=, [A, B|S], [false|S]) :- \+ B =< A. +func(=, [A, B|S], [ true|S]) :- B =:= A. +func(=, [A, B|S], [false|S]) :- B =\= A. +func(<>, [A, B|S], [ true|S]) :- B =\= A. +func(<>, [A, B|S], [false|S]) :- B =:= A. + +% func(>, [A, B|S], [T|S]) :- B #> A #<==> R, r_truth(R, T). +% func(<, [A, B|S], [T|S]) :- B #< A #<==> R, r_truth(R, T). +% func(=, [A, B|S], [T|S]) :- B #= A #<==> R, r_truth(R, T). +% func(>=, [A, B|S], [T|S]) :- B #>= A #<==> R, r_truth(R, T). +% func(<=, [A, B|S], [T|S]) :- B #=< A #<==> R, r_truth(R, T). +% func(<>, [A, B|S], [T|S]) :- B #\= A #<==> R, r_truth(R, T). r_truth(0, false). r_truth(1, true).