7
votes

Qu'est-ce que le S () prédicat est-il à PRolog?

J'ai essayé d'apprendre Prolog et je suis totalement exclu sur ce que le prédicat s () fait. Je vois cela utilisé souvent et il y a si peu de ressources sur Internet sur Prolog que je ne trouve pas de réponse.

ex. xxx


2 commentaires

Quelle version de l'interprète Prolog utilisez-vous?


J'utilise: swi-prolog version 5.10.1 pour AMD64


3 Réponses :


1
votes

S / 1 signifie successeur. Il est utilisé pour représenter des nombres de manière logiquement accessible.


1 commentaires

Cela a un sentiment de sens merci beaucoup! Cependant, lorsque j'essaie d'exécuter un compte de programme qui utilise S / 1, je reçois une sortie étrange sous la forme de:? - myCount (A, [A, A], N). N = s (S (0)); N = s (0); N = s (0); N = 0; faux.



0
votes

C'est spécifique à la mise en œuvre de Prolog. Il fait référence à un prédicat successeur, voir ceci pour plus d'informations


1 commentaires

s (x) n'est pas spécifique à la mise en œuvre. C'est un foncteur arbitraire. Essayez t (x) ou suc (x) à sa place.



16
votes

s / 1 ne fait rien en soi, et ce n'est pas vraiment un prédicat. Ils ne sont que des termes, une représentation du successeur de leur argument. Donc, s (0) est utilisé pour représenter le successeur de 0 (c.-à-d. 1 ), s (s (0)) est utilisé pour représenter le successeur de S (0) (c'est-à-dire 2 ), et ainsi de suite. Ils sont tellement largement répandus dans Prologs parce que Prolog est assez bien une langue pour effectuer un calcul symbolique, alors que même des opérations arithmétiques simples se sentent maladroites, ce qui signifie qu'ils ne sont pas intégrés de manière transparente au paradigme de programmation.


1 commentaires

Cela explique très bien pourquoi la production de mes programmes utilisant S / 1 était si étrange. Merci beaucoup, bonne explication!