users-prolog
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Predicate ordering when using current_predicate/1


From: Paulo Moura
Subject: Re: Predicate ordering when using current_predicate/1
Date: Thu, 21 Nov 2013 15:56:18 +0000

On 21/11/2013, at 15:48, emacstheviking <address@hidden> wrote:

> Hi,
> 
> There is no mention of the actual order of returned predicates,

For a good reason. That's not something that you should rely upon.

> recently I created a testing framework and it has this line of code thanks to 
> Daniel,
> 
> findall(Name,(current_predicate(Name/0), atom_concat('test_', _, 
> Name)),AllTests)
> 
> I am writing tests now that rely upon them being executed in the order that 
> they are defined in the source file i.e. the temporal order in which they 
> were added to the database I presume.
> 
> However, they do not seem to come out in the expected order unless I have 
> done something wrong but the above line of code is what dictates the order of 
> execution.

An alternative could be to use an identifier per test that you can compare and 
sort. An example from the Logtalk's "ack" example unit tests:

test(ack_1) :-
        ...
test(ack_2) :-
        ...
test(ack_3) :-
        ...

Cheers,

Paulo

-----------------------------------------------------------------
Paulo Moura
Logtalk developer

Email: <mailto:address@hidden>
Web:   <http://logtalk.org/>
-----------------------------------------------------------------







reply via email to

[Prev in Thread] Current Thread [Next in Thread]