私は、次のしているプログラム:クエリ、次の理由SWIをプロローグバグ奇妙な出力
filter([],_What,[]).
filter(List,What,Output):-
not(select(What-Val,List,Rest)),
filter([],What,Output).
filter(List,What,[Val|Output]):-
select(What-Val,List,Rest),
filter(Rest,What,Output).
は、私は理解していませんSWI-prolog(7.4.2)、MacとEl Captain(10.11.6)があります。
私はguitracerを試してみましたが、リスト[90,80,80]を作成しますが、 "ZPP"を出力します なぜそれがそれをするのかわかりません。
SWISHオンラインプロローグ出力[90,80,80]なので、SWI-Prologで何かでなければなりません。
EDIT
は、なぜそれがこれを行うん...それは文字になど90 = Z、80 = Pを、数に変換しているようですか?それがロードされてしまったが、この動作はportray_text(true)
によってトリガすることができますどのように伝えるのは難しい
はい、SWI Prologでは、「ZPP」は、 'Z'、' P'、 '' P'のコードの「文字列」(リスト)を表します。彼らは同等です。 '[90、80、80]'を文字列として表示するには、SWI Prologがどのモードに設定されているのか不明です。おそらくもっと重要なのは、少なくとも2つのシングルトン変数があり、クエリが終了しないことです(無限に 'Output = [90、80、80]'という解を生成します)。 – lurker