2

我试图在dynamic/1和规则的帮助下在运行时生成一些assert/1规则。

有没有办法生成要在该规则中使用的变量,就像gensym生成变量一样?

4

1 回答 1

2

我会使用 functor/3 或 length/2。两者都可以创建您可以随后通过索引访问的变量,分别使用 arg/3 或 nth1/3。

例如

?- functor(T, $, 5), arg(3, T, some_value).
T = $(_G1070, _G1071, some_value, _G1073, _G1074).

或者

?- length(T, 5), nth1(3, T, other_value).
T = [_G1070, _G1073, other_value, _G1079, _G1082].
于 2013-06-16T21:14:24.477 回答