我正在使用 Teyjus 在 Lambda Prolog 中进行编程。我有这个简单的列表生成器:
type islist int -> list X -> o.
islist N nil
:- N >= 0.
islist N (H::T)
:- N >= 0,
M is N - 1,
islist M T.
我需要创建一个谓词,该谓词返回一个列表,该列表由 islist 在一定范围内生成的所有列表组成。
我想继续失败驱动循环。目前我只能打印使用以下代码生成的列表:
type loop int -> o.
loop N
:- islist N L,
term_to_string L STR,
print STR,
print "\n",
fail.
loop _.
我需要的是收集这些列表而不是打印它们(所以我需要列表理解之类的东西)。我该怎么做?