私は両方のバックチェーン手順を描くことで、より効率的なメンバの実装を決定しようとしています。Prolog標準メンバー/ 2対メンバー/ 2はappendで実装されていますか?
標準実装:
isMember(X,[X|Tail]).
isMember(X,[H|Tail]) :- isMember(X,Tail).
追加実装:(私のクラスのノートより)
appendMember(X,List).
appendMember(X,List) :- myAppend(List1,[X|List2],List).
myAppend([],List,List).
myAppend([H|List1],List2,[H|Result]) :- myAppend(List1,List2,Result).
私はTKのEclipse上でトレーサーを使用するとき、私は再帰的で標準的な実装のために期待される出力を得ますappend実装はただちに正常終了します。
私はそれがなぜ、そしてappendメソッドのバックチェインの手順を描くのかと思います。
ありがとうございます!
さらに効率的です['memberd/2'](https://stackoverflow.com/a/21971885/772868) – false