を知らない私は、私に与えられたリストのすべての可能なサブリストを返すプロローグを作りたいので、私は書いた:Prologのサブリストの生成、空のリストを掛ける - なぜ
:私はのような結果を得るそのようにしsubSet(L,S):- append(_,L2,L),append(S,_,L2).
を
Out = [] ;
Out = [a] ;
Out = [a, b] ;
Out = [a, b, c] ;
Out = [] ;
Out = [b] ;
Out = [b, c] ;
Out = [] ;
Out = [c] ;
Out = [] ;
空のリストを繰り返すのをやめるにはどうすればよいですか?
私は[S | T]の代わりにSの代わりに何をすればよいのですか?私はそれがここでは空リストではないことを知っていることを意味しますが、それを行うための他の方法はありますか? –
違いは 'S 'は' [] 'に束縛でき、' [S | T] 'は束縛できないということです。もちろん、 'nonempty([_ | _])。 '述語を定義して' nonempty(S) 'を行うのは簡単です。' [S | T] 'を直接使うのが標準的な方法です。 – aioobe
答えを 'sublist'述語btwへのリンクで更新しました。 – aioobe