1
我做這樣的:檢查該原子是一個小寫字母
foo(N) :-
name(N, [Code]),
name(a, [CodeA]),
name(z, [CodeZ]),
CodeA =< Code,
Code =< CodeZ.
是否有感覺並不像這樣的workaroud的方法嗎?
我做這樣的:檢查該原子是一個小寫字母
foo(N) :-
name(N, [Code]),
name(a, [CodeA]),
name(z, [CodeZ]),
CodeA =< Code,
Code =< CodeZ.
是否有感覺並不像這樣的workaroud的方法嗎?
atom_is_lower(N) :-
atom_chars(N, [L]),
char_type(L, lower).
請注意,第二部分(char_type)是必需的,因爲單字符原子可以是數字(例如)。
一種選擇是使用內置的char_type/2
,如果遇到類型錯誤(例如,當輸入超過一個符號時)並拋出異常,則將異常轉換爲失敗。
atom_is_lower(Atom) :-
catch(char_type(Atom, lower), _, fail).
該解決方案還可以產生小寫字母:
?- atom_is_lower(A).
A = a ;
A = b ;
A = c ;
A = d ;
A = e ;
...
鏈接似乎被打破:( – Joe 2013-05-14 09:34:31