Home › フォーラム › AZ-Prologサポート掲示板 › SWI-Prologでは動きますが、、、、
- このトピックは空です。
- 
		投稿者投稿
- 
		
			- 
2016/10/03 9:15 PM #58407上間ゲストこんばんは M.Hiroiさんの次のコード 
 SWI-Prologでは動きますが、AZ-Prologでは答えが求まりません。my_flatten([X | Xs], Ys) :- 
 my_flatten(X, Ys1), my_flatten(Xs, Ys2), append(Ys1, Ys2, Ys).
 my_flatten(X, [X]) :- atomic(X), X \== [].
 my_flatten([], []).実行は次のようになるはずですが、答えが求まりません。 
 ?- flatten([a, [b, [c], d], [e, f]], X).
 X = [a, b, c, d, e, f]AZ-Prologでも動く気がします。\== の挙動がSWI-PrologとAZ-Prologでは違うのかな? 
- 
2016/10/03 9:19 PM #58408上間ゲスト2重再帰に問題? 
- 
2016/10/03 9:57 PM #58410稲葉ゲストAZ-Prolog でも解が求まっていますが。。。。 # 文面どおりですと、 
 # ?- my_flatten([a, [b, [c], d], [e, f]], X).
 # ではなく、
 # ?- flatten([a, [b, [c], d], [e, f]], X).
 # と入力されているのであれば、述語未定義ですので Noですね。
 # なお、SWI-Prolog には flatten/2 という同様の働きをする
 # 組込述語がありますので、定義述語でないほうを動かしたのでは?AZ-Prolog version 9.24 (Win64/x64) 
 Copyright (C) SOFNEC CO., LTD. 1987-2016/02/08
 | ?-[con].
 | my_flatten([X | Xs], Ys) :-
 | my_flatten(X, Ys1), my_flatten(Xs, Ys2), append(Ys1, Ys2, Ys).
 | my_flatten(X, [X]) :- atomic(X), X \== [].
 | my_flatten([], []).
 | ^Z
 yes
 | ?-my_flatten([a,[b,[c],d],[e,f]],X).
 X = [a,b,c,d,e,f]
 yes
- 
2016/10/04 7:48 AM #58412上間ゲスト稲葉さん 
 すいませんおっしゃるとおり my_が抜けていました。 | ?-my_flatten([a,[b,[c],d],[e,f]],X). 
 X = [a,b,c,d,e,f];
 no
 | ?-このとおり 
 実行できました。ありがとうございます。 処理系作成中のSasagawaさんの方で、実行できるようになりました。 
 [].のドットをNilとしていたバグだそうです。(よくわかりませんが)掲示板の流れ汚してしまいました。 
 一連の書き込み削除でもいいです。
 
- 
- 
		投稿者投稿
- フォーラム「AZ-Prologサポート掲示板」には新規投稿および返信を追加できません。
