差分リストの続き

とりあえず、こんなのが差分リストの定石だということはわかった。

hoge([W | Ws], [Xs, Ys]) :-
        hoge(W, [Xs, Xs1]), hoge(Ws, [Xs1, Ys]).

こういう条件がたくさん登場する。

だめだ

ぜんぜん差分リストわからん。10分くらいしか考えてないけど。

とりあえず、

hogeの引数が足りなかったので追加した。あと、
差分リストを使うとき、終了条件はこんな風にして、

hoge(W, [Ys, Ys]).

使うときは、二つ目には空リストを渡さなければならない理由がわかった。

hoge(Ws, [Ys, []]).

最終的にリストは

 [_ | [_ | [] ]]

のように空リストで終わる必要があるから、初めの引数で、最後の要素を指定してあげて、終了条件で渡してあげると。このはじめに渡す空リストが[a,b,c]とかだった場合は[]の代わりに[a,b.c]が連結されると。