2014-06-13 9 views
4

Je suis en train d'utiliser le split_string prédicat intégré soi-disant/4 de la documentation ici: http://www.swi-prolog.org/pldoc/man?predicate=split_string/4Comment appeler le prédicat split_string sur swi-prolog?

Cependant, lorsque je tente de l'utiliser, comme dans l'exemple, je reçois quelque chose comme ceci:

?- split_string("a.b.c.d", ".", "", L). 
ERROR: toplevel: Undefined procedure: split_string/4 (DWIM could not correct goal) 

Qu'est-ce que je fais mal? Suis-je censé charger une bibliothèque en premier?

+2

vous avez besoin de SWI-Prolog version 7 ou supérieure – CapelliC

Répondre

5

split_string/4 est un module intégré SWI qui a été introduit dans SWI7. Il n'est pas présent dans les versions commerciales de Prolog comme SICStus, ni ISO, donc l'utiliser réduira vos futures options de changement. A noter également que l'interprétation par défaut pour des guillemets doubles est généralement codes, voir What is the difference between ' and " in Prolog?

Dans les versions précédentes de SWI, qui est en Swi6 et avant, il y a concat_atom/3 resp. atomic_list_concat/3 qui vous donne des fonctionnalités comparables.

?- atomic_list_concat(L,'_',a_b__c). 
L = [a,b,'',c]. 

Ensuite, il y a les ISO Encastrements: atom_concat/3 et sub_atom/5 qui pourraient être utilisés pour la mettre en œuvre. Donc, en utilisant atomic_list_concat/3 ne poserait pas un gros problème de portabilité.

+0

Merci pour votre contribution. Alors, comment puis-je obtenir la deuxième partie d'une chaîne comme pour "Prolog/a" comment puis-je obtenir "a"? – Tomer

Questions connexes