J'essaie actuellement d'apprendre quelques Prolog (en utilisant ECLiPSe). De temps en temps je tombe sur le prédicat clause/2, mais je ne comprends pas à quoi il sert. J'ai lu quelques références (par exemple this one), mais je ne comprends toujours pas dans quel cas cela pourrait être utile. Quelqu'un peut-il me fournir un exemple ou une explication facile de ceci?Comprendre le prédicat clause/2
3
A
Répondre
3
Ce prédicat permet la métaprogrammation, c'est-à-dire le raisonnement relatif à votre programme Prolog.
SWI-Prolog utilise clause/2
dans, A.O., le prédicat explain
:
?- explain(member).
"member" is an atom
Referenced from 12-th clause of pce_meta:pce_to_pl_type/3
lists:member/2 is a predicate defined in
c:/program files/swi-prolog/library/lists.pl:81
Referenced from 1-th clause of prolog_dialect:source_exports/2
Referenced from 1-th clause of pce_config:term_description/2
Referenced from 1-th clause of pce_config:config_attribute/2
Referenced from 1-th clause of pce_config:load_config_key/2
Referenced from 1-th clause of pce_config:term_description/3
Referenced from 1-th clause of pce_config:current_config_path/1
Referenced from 4-th clause of persistent_frame:has_specifier/1
true.
et dans la mise en œuvre de Constraint Handling Rules. Je pense qu'il est également utile pour faire inductive logic programming et diverses autres extensions Prolog.
Pour une introduction complète à la métaprogrammation dans Prolog, voir L'Art de Prolog par Sterling et Shapiro.
1
une utilisation est une Quine vraiment élégante: b
quine :-
clause(quine, A),
portray_clause((quine:-A)).
trouvé here
qui est évidemment un cas de méta-programmation comme larsmans dit
Questions connexes
- 1. Prédicat dans le tableau
- 2. problème avec le prédicat
- 3. ce qui est en cours() dans le prédicat de prédicat
- 4. Le générateur de prédicat contient
- 5. Comment obtenir le corps d'un prédicat?
- 6. Prédicat autorun
- 7. prédicat Prolog appelant
- 8. prédicat sérialisation
- 9. Le tri n'aime pas mon prédicat
- 10. Problèmes de prédicat Prolog
- 11. problèmes avec prédicat Prolog
- 12. Déclarant un prédicat dynamique gprolog
- 13. Nombre de mots utilisant le prédicat
- 14. Prolog Cut opérateur dans le premier prédicat
- 15. Composé Le prédicat ne fonctionne pas
- 16. Le « dans » prédicat dans Entity Framework
- 17. Division d'une chaîne, basée sur le prédicat
- 18. Comment utiliser le prédicat avec nsdictionary?
- 19. Définir le prédicat dans la classe
- 20. MySQL et omettre le prédicat WHERE
- 21. Opérateur 'OU' dans le prédicat XPath?
- 22. Prédicat pour Many-To-Many
- 23. Choix de prédicat EventKit
- 24. calcul de prédicat, implication
- 25. Syntaxe de prédicat NSFetchRequest
- 26. prédicat invalide zcat
- 27. Haskell prédicat plus complexe
- 28. NSDictionary avec prédicat
- 29. Cache de prédicat
- 30. prédicat antlr gated
Ainsi, le prédicat permet de vérifier si il y a une clause dynamique, qui réussirait avec la tête et le corps donnés? – Lennart
@redfalcon: pas forcément une clause dynamique, elle trouve aussi des clauses statiques. –
Merci, cela a du sens pour moi. – Lennart