2011-01-05 8 views

Répondre

3

Votre définition de safe_to_file/1 est plus sûre en utilisant open/3 et close/1. Dans le cas contraire, des interruptions ou des erreurs se produisant pendant l'affichage/0 laisseraient le flux ouvert, permettant à d'autres parties d'écrire accidentellement dans le même fichier. Ainsi,

save_to_file(File) :- 
    open(File,write,Stream), 
    with_output_to(Stream, listing), 
    close(Stream). 

est plus sûr. Maintenant, seule la liste peut écrire dans ce fichier. with_output_to/2 est spécifique à SWI, YAP.

Pour revenir à votre question, dans la plupart des situations, portray_clause (Stream, Term) sera ce que vous voulez réellement.

+0

Mais que dois-je faire pour sauvegarder tous les termes similaires, tels que goûts (john, pommes), goûts (mike, oranges), likes (mary, chou)? – qutron

+2

Il suffit de modifier la liste ci-dessus. Donc, au lieu de la liste, vous pouvez remplacer la liste (j'aime) ou si vous voulez être plus précis, la liste (aime/2) – Roman

+0

@qutron: Ah, alors ce que vous voulez, c'est de ne pas enregistrer un terme, mais d'enregistrer un select prédicat à un fichier. – false

Questions connexes