New arithmetic functions programmed in MINERVA are used exactly as built in functions.
This allows both functional and relational notations for arithmetic expressions.
MINERVA predicates for arithmetic evaluation, e.g. is/2 used on a function like "Result = f(A,...,N)" will search for a predicate "f(A,...,N,Result)".
Thus arithmetic in MINERVA becomes easier to read and uses aggresive variable hiding.
% example: compute the cost for industrial urethane foam% notation as relations a(Price) :- height(H), width(W), depth(D), unit_price_per_volume(U), Price is H * W * D * U.
% notation as functions
b(Price) :- Price is height * width * depth * unit_price_per_volume.
% uniform notation of functions resp. data base
height(6). depth(38). width(75). unit_price_per_volume(0.01).
Here is the result for the above program:
?- a(Price).Price = 171.0
yes
?- b(Price).
Price = 171.0
yes
?-