Prolog原子列表

3

如何转换这个

fact( [a,b,c], [d,e,f], ..., [p, q, r] )

将这些元素转换成一个列表?
结果:
[[a,b,c], [d,e,f], ..., [p, q, r]]
2个回答

3
list_fact_args(Fact,List) :- Fact =.. [fact|List].

=..是一个方便的谓词,它将左侧的谓词转换为一个列表,其中第一个成员是谓词名称,后面的成员是其参数。或者将右侧的列表转换为左侧的谓词。这里的fact表示只列出名为'fact'的谓词。


抱歉,但如何使用这个?<br/> fact( [a,b,c], [d,e,f], [p, q, r] ).<br/> list_fact_args(Fact,List) :- Fact =.. [fact|List].<br/> list_fact_args(F,L)<br/> 没有解决方案 - balping
@mbratch Visual Prolog确实具有该运算符。 - balping
1
像这样:list_fact_args(fact([a,b,c],[d,e,f],[p,q,r]),L)。抱歉我说话太简洁了,我是新来的。 - traitor
没问题,非常感谢!还有一件事(抱歉,我是Prolog的新手):如果fact(....)像fact([a,b,c],[d,e,f],[p,q,r])。这样预定义了呢? - balping
1
如果您仅需获取已知参数元数的特定谓词的参数列表,则可以将参数放入列表中。例如,如果您已定义fact,则给定fact(A,B,C),List = [A,B,C],则List将实例化为[[a,b,c],[d,e,f],[p,q,r]]。否则,使用=../ 2是正确的方法!这很有趣。 - Shon
显示剩余5条评论

0

获取您的Prolog手册或教材,查找=../2。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接