List Read 并将其传递给 Prolog 中的 Right Clause Functor

List Read and Pass it to Right Clause Functor In Prolog

这是我的代码:

functor1(Action,[Action|_]) :-
    functor2(container(Action)). 
functor1(Action,[_|OtherActions]) :-
    functor1(Action,OtherActions).
functor2(container([Abc,Def])):- 
    append([Abc],[Def],Z),write(Z).

现在,当我尝试查询时,

functor1(X,[[first,   sign],[second, sign]]).

我对这个查询的期望是,首先 X 应该读取 X = [first,sign],然后传递给 functor2's 容器,以便我的 functor2 可以发挥作用。但它一直在给我 false.

我觉得没问题...有什么问题吗?

$ swipl
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.1.37)
Copyright (c) 1990-2015 University of Amsterdam, VU Amsterdam
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.

For help, use ?- help(Topic). or ?- apropos(Word).

?- [f].
true.

?- functor1(X,[[first,   sign],[second, sign]]).
[first,sign]
X = [first, sign] ;
[second,sign]
X = [second, sign] ;
false.