检查原子是否是小写字母
我这样做是这样的:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请注意,第二部分(char_type)是必需的,因为单字符原子可以是数字(例如)。
Note that the second part (char_type) is necessary because a single-character atom can be a number (for example).
一种选择是使用内置的 char_type/2 ,如果它遇到类型错误(例如,当输入长于一个符号时)并引发异常,则将异常转换为失败。
此解决方案还可以生成小写字母:
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.This solution can also generate lowercase letters: