Question

Je le m(L,L) prédicat et je veux revenir la liste qu'il faut. Le code est le suivant:

m([],[]).
m([H|T],[H|L]) :- m(T,L).

Lorsque je tente de l'utiliser avec cet exemple:

m([1,2,3,4,5,6,7,8,9,10],L)

Je reçois cela comme une réponse:

L = [1, 2, 3, 4, 5, 6, 7, 8, 9|...].

(je remarque que si j'essaie avec moins d'éléments de son ok.) Pourquoi est-ce qui se passe et la liste est inachevée?

Comment puis-je éviter cela?

Désolé si sa question vraiment stupide, mais je l'ai cherché sur le web et je ne pouvais pas trouver toute la documentation qui peut me aider à comprendre ... Je vous remercie!

Était-ce utile?

La solution

La liste est terminée - la sortie est juste de tronquée à des fins de visualisation. Si vous écrivez un prédicat qui imprime votre liste, vous verrez qu'il est complet. Je devine que vous utilisez SWI Prolog, ce qui signifie que vous pouvez consulter ce lien des façons de modifier les paramètres d'affichage.

Autres conseils

Les deux boucle requête toplevel / réponse en tant que débogueur termes abbreviate longues et complexes. Ils le font pour éviter les pages sans fin de sortie. En fait, ils écrivent en utilisant write_term / 3 qui prend une option -list comme argument. La liste d'options pour trouver des réponses imprimées par le premier niveau Prolog est dans les toplevel_print_options Prolog-drapeau et celui pour le débogueur est en debugger_print_options. Au départ, les deux ont la valeur indiquée ci-dessous:

?- current_prolog_flag(toplevel_print_options, X).

X = [quoted(true), portray(true), max_depth(10), spacing(next_argument)].

Pour modifier les paramètres par défaut: dans votre fichier d'initialisation personnel Prolog Ajouter une directive set_prolog_flag / 2 (voir PlInitialisation ) à changer la valeur par défaut mentionnés ci-dessus drapeaux Prolog.

Il suffit d'aller à la settings -> user init file ... ->

Et le changement MAX_DEPTH (10) comme ceci:

 :- set_prolog_flag(toplevel_print_options,
             [quoted(true), portray(true), max_depth(100)]).

Il y a aussi d'autres options que vous pouvez utiliser dans PlInitialisation fichier qui sont déjà commenté.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top