检查原子是否是小写字母

发布于 2024-10-28 13:20:32 字数 210 浏览 6 评论 0原文

我这样做是这样的:

foo(N) :-
        name(N, [Code]),
        name(a, [CodeA]),
        name(z, [CodeZ]),
        CodeA =< Code,
        Code  =< CodeZ.

有没有一种方法感觉不像这样的解决方法?

I'm doing it like this:

foo(N) :-
        name(N, [Code]),
        name(a, [CodeA]),
        name(z, [CodeZ]),
        CodeA =< Code,
        Code  =< CodeZ.

Is there a way that doesn't feel like such a workaroud?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南渊 2024-11-04 13:20:32
atom_is_lower(N) :-
    atom_chars(N, [L]),
    char_type(L, lower).

请注意,第二部分(char_type)是必需的,因为单字符原子可以是数字(例如)。

atom_is_lower(N) :-
    atom_chars(N, [L]),
    char_type(L, lower).
  • atom_chars converts the atom into a list of characters.
  • char_type checks the type of a character.

Note that the second part (char_type) is necessary because a single-character atom can be a number (for example).

飘逸的'云 2024-11-04 13:20:32

一种选择是使用内置的 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 ;
...

One option is to use the built-in char_type/2 and if it encounters a type error (e.g. when the input is longer than one symbol) and throws an exception then convert the exception to failure.

atom_is_lower(Atom) :-
    catch(char_type(Atom, lower), _, fail).

This solution can also generate lowercase letters:

?- atom_is_lower(A).
A = a ;
A = b ;
A = c ;
A = d ;
A = e ;
...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文