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: emacstheviking
Subject: Re: Predicate ordering when using current_predicate/1
Date: Thu, 21 Nov 2013 16:04:37 +0000

I really don't want to go down that road but I guess if there is no choice I will have to... originally I had a predicate that explicitly returned the tests... I think I will do both... I will have a predicate that if it exists, can return a bunch of tests and they will be executed in order.

OK, I can live with that,
thanks again Paulo!
:)



On 21 November 2013 15:56, Paulo Moura <address@hidden> wrote:

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/>
-----------------------------------------------------------------





_______________________________________________
Users-prolog mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/users-prolog


reply via email to

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