如何在prolog中为列表中的项赋值

如何在prolog中为列表中的项赋值,prolog,Prolog,因此,我使用atom\u chars(X,Y)创建了一个列表。将字符串'abc'拆分为[a,b,c]。现在我想为列表中的元素指定编号。例如a是4,b是2,c是7 我该怎么做呢?在Prolog中,符号a、b和c被视为原子。您不能将值“分配”给它们。但是,您可以将数字与它们关联起来,例如使用-作为术语的方便符号。您可以形成一个列表: [a-2, b-4, c-3] 假设您将其绑定到变量AssocList。然后,如果将字母或字符绑定到C,则可以查询: member(C-N, AssocList)

因此,我使用
atom\u chars(X,Y)创建了一个列表。
将字符串
'abc'
拆分为
[a,b,c]
。现在我想为列表中的元素指定编号。例如
a
是4,
b
是2,
c
是7


我该怎么做呢?

在Prolog中,符号
a
b
c
被视为原子。您不能将值“分配”给它们。但是,您可以将数字与它们关联起来,例如使用
-
作为术语的方便符号。您可以形成一个列表:

[a-2, b-4, c-3]
假设您将其绑定到变量
AssocList
。然后,如果将字母或字符绑定到
C
,则可以查询:

member(C-N, AssocList)

这会将
N
绑定到与
C
关联的数字。同样,如果您有一个数字,它将产生与该数字关联的所有字符
C

您需要大写字母来命名变量,但atom_chars在给您大写字符串时会给您字符,因此这是无法做到的。但是如果你传递了一个变量列表,你可以给它们赋值。请不要通过破坏你的帖子为别人做更多的工作。通过在Stack Exchange(SE)网络上发布,您已经在a下授予SE分发内容的不可撤销权利(即,无论您未来的选择如何)。根据SE政策,分发非故意破坏版本。因此,任何故意破坏行为都将恢复原状。请参阅:。如果允许删除,则在帖子下方左侧有一个“删除”按钮,但它仅在浏览器中,而不是移动应用程序中。