J'appelle un moteur SWI Prolog à partir d'une DLL C++ et je voudrais pouvoir accéder à tous les prédicats affirmés/dynamiques (similaire à ce que fait normalement la liste). Dans Prolog GNU, j'appellerais le prédicat dynamic/1 avec une Variable et Prolog l'unifierait avec tous les indicateurs de prédicats dynamiques. Dans l'étape suivante, j'appellerais ces prédicats avec des variables et obtiendrais une liste complète.Unifier les prédicats dynamiques dans SWI Prolog
Malheureusement, je ne peux pas le faire dans SWI Prolog (ERREUR: les arguments ne sont pas suffisamment instanciés). Existe-t-il un autre moyen?
Merci. Ma dernière idée utilisait quelque chose comme ceci: myIndicators (Nom, Arité): - predicate_property (tête, dynamique), \ + predicate_property (tête, built_in), foncteur (chef, Nom, Arity). – aLu
C'est assez proche de ce que j'ai suggéré ici; la seule différence étant que je m'assurais que des prédicats dynamiques affirmés dans différents modules étaient trouvés. Si vous n'utilisez pas plusieurs modules, alors ce que vous avez suggéré semble bien! – sharky