フォーラムへの返信
2件の投稿を表示中 - 1 - 2件目 (全2件中)
	
- 
		投稿者投稿
 - 
		
			
				
WEBサイト管理者キーマスター
お問い合わせありがとうございます。
結論から言いますとオペレータの振舞いの取り決め(仕様)です。
解決方法としてはオペレータ登録されているアトムは()で囲うこ とで そのアトムそのものとして扱われます。| ?-A = '=',(A== '=' -> true). Syntax error | ?-A = (=),(A==(=) -> true). A = = yes====以下説明====
1. A = B -> true.
B がオペレータではないため OK2. A = == .
= は infix として読み、== はオペレータであり、同様の強度(xfx,700)であるため、
本来エラーになる筈だが、次 Token が終端があるため、オペレータ扱いにせず( POSTFIXでもない)、
= (A,==) と理解するため OK3. A = == -> true.
= infix として読み、== はオペレータであり、同様の強度(xfx,700)であり、
次 Token(->)が終端 or 区切り文字ではないため NGつまり、= や == , > , < 等は xfx 700 で定義されているので入れ子にはならない。
| ?-read(X),display(X).<br /> |: A = B == C.<br /> Syntax error ---- Backtrace<br /> (read(X_9),display(X_9)) ?-and や or は yfx 500 で定義されているため入れ子になる。| ?-read(X),display(X). |: X is A and B or C. is(X_87,or(and(A_89,B_91),C_ 93)) X = X_87 is A_89 and B_91 or C_93以下のようにすると、期待する動作となりますが、 オペレータの定義を
変更することになるので先に記述した解決策が望ましいでしょう。| ?-op(700,xfy,=). yes | ?-op(700,xfy,==). yes | ?-read(X),display(X). |: A = == -> true. ->(=(A_84,==),true) X = A_84= == ->trueご確認ください。
WEBサイト管理者キーマスター掲示板不具合ため、お手数おかけいたしました。
ご報告ありがとうございます。こちら、改行できるよう仕様を変更致しましたので今後も宜しくお願いします。
 - 
		投稿者投稿
 
2件の投稿を表示中 - 1 - 2件目 (全2件中)