计算谓词

时间:2015-05-25 19:36:02

标签: prolog

我有这样的事情:

plane(1, 2, aaa, b([1,2,3,4]), 3).

我能够访问平面的元素并像上面一样显示它,但问题是b([1,2,3,4])。 如何访问它来计算该列表中的元素数量?

3 个答案:

答案 0 :(得分:2)

如果这些plane的格式始终相同,那么您可以模式匹配(统一)将b中的列表绑定到变量,然后检查长度(使用情况) count_in_plane(+,-),即提供P,获取L):

count_in_plane(P, L) :- 
    P = plane(_,_,_, b(List), _),
    length(List, L).

答案 1 :(得分:1)

假设您已将参数编号4与变量B_list统一起来。如果您想从中获取列表,请使用统一运算符=,如下所示:

/* Let's pretend that you do not need other parameters */
plane(_, _, _, B_list, _) :-
    /* This assigns the content of the list inside b(...) to List */
    B_list = b(List),
    length(List, N),
    write(N),
    nl.

这将打印4。

答案 2 :(得分:0)

简单地说,像:

count( plane(_,_,_, b(List), _), R ) :- length(List, R).