I have a predicate check(Data,Res)
that checksDats
according to some rules and returns Res
(a function result on Data
, assuming Data
answers to several criteria).
I have another function generate(N,Data)
which generates a N
-size Data
.
My main program begins with generating many 1
-size Data
, then if none answered the criteria, we go on to 2
-size Data
and so on until we reach a certain M
upper limit.
main(M):- next_number(N,M), generate(N,Data), check(Data,Res).
However, the program runs for very long time. I wanted to make sure it does not get stuck. For this, I wanted to print the generated Data
each time before its being checked. But adding display
did not assist, because it only actually displayed if the entire statement was true.
That's not what I want.
I want to keep track of the progran using display
, similarly to System.out.println
in Java.
Is there any other function that displays anyway? Or an idea how to use display
in a way that will always display, regardless if the Data
answered the criteria or not?
I thought to do:
(check(Data,Res) -> display(Data);display(Data)).
But I am not sure. Any ideas?