Prolog-在maplist中套用参数

时间:2019-02-23 17:20:22

标签: debugging prolog maplist

我想了解map列表自定义谓词的自定义谓词可能是我的错误:

tf.reset_default_graph()

del model

sess = tf.Session()
K.set_session(sess)
K.clear_session()
K.get_session()

此查询有效:

generateProjection(TableOrTables/Selectors, Row, Result) :- 
    writeln(kiki),
    writeln(TableOrTables),
    writeln(Selectors),
    writeln(Row),
    Result = 1/2.

compute_projection(Rows, TableOrTables, Selectors, Result) :- 
    writeln(hello),
    writeln(Rows),
    writeln(Selectors),
    maplist(
        generateProjection(TableOrTables/Selectors),
        Rows,
        Result
    ).

这失败了:

generateProjection(foo/[foo/bar, foo/baz], [1, 2], Z).

感谢您的帮助

1 个答案:

答案 0 :(得分:3)

让我们看看您的第二个查询:

?- compute_projection([[1,2],[3,4]], foo, [foo/bar,foo/baz], _A/_B).

maplist/3关联了两个列表。 现在让我们再次来看谓词定义:

compute_projection(Rows, TableOrTables, Selectors, Result) :- 
    maplist(generateProjection(TableOrTables/Selectors),
            Rows,
            Result).

所以Result是一个列表,但是查询要求使用_/_形式的术语。

这就是您的查询无法成功的原因。