2009-09-27 6 views
2

Salutations,Existe-t-il une vérification alphabétique des caractères dans prolog?

Y at-il un test ou un prédicat que je peux utiliser dans prolog pour vérifier qu'un certain caractère donné est alphabétique? En ce moment, ce que je fais est:

Liste des caractères non-autorisés: \ n -> 10, espace -> 32,! -> 33, .-> 46,, -> 44,: -> 58, ; -> 59% % 63->? , 45 -> -.., 34-> », 39->%

\+member(Ch,[10, 32, 33, 34, 39, 44, 45, 46, 58, 59, 63 ]), %Checking for line return   (\n),  space, punctuations 

Ce ne sont que quelques-uns des personnages que je dois vérifier d'avoir un test comme une lettre (Ch) me sauverait un beaucoup de temps, et surtout être un moyen approche plus défensive.

Merci

Répondre

3

is_alpha/1

Il y a aussi d'autres prédicats tels que is_lower/1 etc.

1

Dans SWI-Prolog, cela se fait avec char_type/2 tels que

% X is either a single-character atom or a character code 
alphabetical(X) :- char_type(X, alpha). 

SWI-Prolog offre également la bibliothèque ctypes qui fournit is_alpha, etc.

:- use_module(library(ctypes)). 
alphabetical(X) :- is_alpha(X). 
+1

Nit: Lorsque vous utilisez des codes de caractères, plutôt [ ' code_type/2'] (http://www.swi-prolog.org/pldoc/doc_for?object=code_type/2) doit être utilisé. SWI ne vérifie pas et accepte les deux, cependant. – false