从Prolog中的term获取ASCII值列表

Iqa*_*zra 3 ascii prolog

我使用的是SWI-Prolog版本7.6.3,最近我遇到了将数字和字母组合成一个术语转换为ASCII值列表的问题.

我知道我们可以使用name/2谓词获取特定术语的ASCII值列表.例如,如果我想获得长期的ASCII值ab或者'ab',那么我们就可以使用name(ab,X).Prolog只是输出X = [97, 98],97和98分别是a和b的ASCII值.

谓词name/2也适用于数字.如果我想获得长期的ASCII值123或者'123',那么我们就可以使用name(123,X).同样,Prolog只输出X = [49, 50, 51]49,50和51相应的ASCII值1,2和3.

但是,name/2如果我在一个术语中组合数字和字母,则谓词不起作用.例如,我期望name(2a,X)返回X = [49, 97]name(3b,X)返回X = [50,98].但是,解释器会给出错误异常,说明操作符是预期的.

我注意到只有术语以数字开头才会出现问题.我检查了按预期name(a2,X)返回的解释器X = [97, 49].

我该如何解决这个问题?或者这种情况本身不能在Prolog中处理?

mat*_*mat 5

3a不是Prolog原子.要使它成为原子,请用单引号写:

'3a'

另外,检查出atom_chars/2将原子与字符列表联系起来!