Prolog offre de nombreuse structures de contrôle (cut, soft-cut, repeat, fail, ...). Il manque une boucle de type << for >>. Le prédicat for/4 est limité aux valeurs entières et aux incréments de 1.
Exemple :
for(I,1,10, ( foo(I), print(I) ) )
Une autre structure de contrôle inspirée des macros en C permet d'activer ou non certaines parties du code. On peut définir un symbole et eventuellement lui associer une valeur (define/1), puis demander si un symbole est défini ou lire sa valeur (ifdef/1). Un symbole peut aussi être redéfini (redefine/1) ou indéfini (undefine/1).