我使用的是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中处理?