Clear out CLP(FD) functions.
I like them but then you are constrained (pun intended) to only using integers. I'll probably bring them back at some point, either as an alternate implementation or their own commands.
This commit is contained in:
parent
731b49973c
commit
6d92b8801f
35
thun/thun.pl
35
thun/thun.pl
|
|
@ -91,10 +91,6 @@ func(cons, [A, B|S], [[B|A]|S]).
|
|||
func(swap, [A, B|S], [B, A|S]).
|
||||
func(dup, [A|S], [A, A|S]).
|
||||
func(pop, [_|S], S ).
|
||||
% func(+, [A, B|S], [C|S]) :- C #= A + B.
|
||||
% func(-, [A, B|S], [C|S]) :- C #= B - A.
|
||||
% func(*, [A, B|S], [C|S]) :- C #= A * B.
|
||||
% func(/, [A, B|S], [C|S]) :- C #= B div A.
|
||||
|
||||
% Symbolic math. Compute the answer, or derivative, or whatever, later.
|
||||
func(+, [A, B|S], [B + A|S]).
|
||||
|
|
@ -102,20 +98,9 @@ func(-, [A, B|S], [B - A|S]).
|
|||
func(*, [A, B|S], [B * A|S]).
|
||||
func(/, [A, B|S], [B / A|S]).
|
||||
|
||||
% Attempt to calculate the value of a symbolic math expression.
|
||||
func(calc, [A|S], [B|S]) :- B is A.
|
||||
|
||||
func(bool, [ 0|S], [false|S]) :- !.
|
||||
func(bool, [ 0.0|S], [false|S]) :- !.
|
||||
func(bool, [ []|S], [false|S]) :- !.
|
||||
func(bool, [ ""|S], [false|S]) :- !.
|
||||
func(bool, [false|S], [false|S]) :- !.
|
||||
|
||||
func(bool, [_|S], [true|S]).
|
||||
|
||||
% func(pm, [A, B|S], [C, D|S]) :- C #= A + B, D #= B - A.
|
||||
% func(pm, [A, B|S], [B + A, B - A|S]).
|
||||
|
||||
% func(sqrt, [A|S], [B|S]) :- B^2 #= A.
|
||||
func(sqrt, [A|S], [sqrt(A)|S]).
|
||||
|
||||
func(concat, [A, B|S], [C|S]) :- append(B, A, C).
|
||||
|
|
@ -135,6 +120,14 @@ 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(bool, [ 0|S], [false|S]) :- !.
|
||||
func(bool, [ 0.0|S], [false|S]) :- !.
|
||||
func(bool, [ []|S], [false|S]) :- !.
|
||||
func(bool, [ ""|S], [false|S]) :- !.
|
||||
func(bool, [false|S], [false|S]) :- !.
|
||||
|
||||
func(bool, [_|S], [true|S]).
|
||||
|
||||
func(>, [A, B|S], [ true|S]) :- B > A.
|
||||
func(>, [A, B|S], [false|S]) :- \+ B > A.
|
||||
func(<, [A, B|S], [ true|S]) :- B < A.
|
||||
|
|
@ -148,16 +141,6 @@ 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).
|
||||
|
||||
|
||||
/*
|
||||
Definitions
|
||||
|
|
|
|||
Loading…
Reference in New Issue