Bonsoir tout le monde,

Commençant à apprendre le prolog, je rencontre une erreur que je n'arrive pas à comprendre car elle n'apparait pas chez mes camarades utilisant l'IDE SWI-prolog sur Windows 7 (moi étant sur Mac OS X et utilisant swi-prolog dans le terminal).

Voici mon programme, il permet de mesurer la longueur d'une liste:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
%longueur(L,N)
 
longueur([],0).
longueur([_X|L],N):-
longueur(L,N1),
N is N1+1.
 
:- begin_tests(test1).
test(longueur):-
longueur([a,b,c,d,e],5).
:-end_tests(test1).
Il compile bien, cependant si je passe une ligne entre mon programme est mon test je reçois 1640 clauses, si je ne pas pas de ligne ça compile toujours mais avec 0 ou 1 clause.

Ensuite lorsque je fais un run_tests de mon programme longueur, j'obtiens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
?- 
|    [longueur_liste].
% longueur_liste compiled 0.03 sec, 1,640 clauses
true.
 
?- run_tests(longueur).
ERROR: unit_test `longueur' does not exist
^  Call: (10) cleanup_trap_assertions(<clause>(0x7f91d1592820)), report, cleanup_after_test ? creep
   Call: (12) plunit:cleanup_trap_assertions(<clause>(0x7f91d1592820)) ? creep
   Exit: (12) plunit:cleanup_trap_assertions(<clause>(0x7f91d1592820)) ? creep
   Call: (12) plunit:report ? creep
   Call: (19) plunit:passed(_G370, _G371, _G372, _G373, _G374) ? creep
   Fail: (19) plunit:passed(_G370, _G371, _G372, _G373, _G374) ? creep
   Call: (19) plunit:failed(_G399, _G400, _G401, _G402) ? creep
   Fail: (19) plunit:failed(_G399, _G400, _G401, _G402) ? creep
   Call: (19) plunit:failed_assertion(_G427, _G428, _G429, _G430, _G431, _G432, _G433) ? creep
   Fail: (19) plunit:failed_assertion(_G427, _G428, _G429, _G430, _G431, _G432, _G433) ? creep
   Call: (19) plunit:blocked(_G458, _G459, _G460, _G461) ? creep
   Fail: (19) plunit:blocked(_G458, _G459, _G460, _G461) ? creep
   Call: (19) plunit:sto(_G486, _G487, _G488, _G489) ? creep
   Fail: (19) plunit:sto(_G486, _G487, _G488, _G489) ? creep
% No tests to run
   Exit: (12) plunit:report ? creep
   Call: (12) plunit:cleanup_after_test ? creep
   Exit: (12) plunit:cleanup_after_test ? creep
^  Exit: (10) plunit:cleanup_trap_assertions(<clause>(0x7f91d1592820)), plunit: (report, cleanup_after_test) ? creep
Est ce que l'un d'entre vous saurez quel est le problème ?

Accessoirement, est ce que vous sauriez pourquoi lorsque je tape X=X+1. dans swi-prolog (Windows et Mac) la réponse est X=X+1 à la place de false?

Merci d'avance pour vos réponses.