「よくやりがちな間違え1」の編集履歴(バックアップ)一覧に戻る
func(['A','A','A','A','A']).
| ?-test. ano traceしてみましょう Match : test :- func([A,A,A,A,A]). %1回目 << LAST CALL >> [1] 0 Try : func([A,A,A,A,A]) ? Match : func([A,A,A,A,A]) :- write(a), func([[A,A,A,A]]). [2] 1 Try : write(a) ? << BUILTIN CALL >> a [2] 1 Succ : write(a) << LAST CALL >> [1] 0 Try : func([[A,A,A,A]]) ? %2回目 [1] 0 Fail : func([[A,A,A,A]])
test:- func(['A','A','A','A','A']). func([]). func(['A'|L]):-write('a'),func(L). ||?-test. aaaaa yes LOOP = 12
test:- func(['A','B','A','A','A']). func([]). %① func([_|L]):-func(L). %② func(['A'|L]):-write('a'),func(L). %③
||?-test. yes LOOP = 7
test:- func(['A','B','A','A','A']). func([]). %第1定義節 func(['A'|L]):-write('a'),func(L). %第2定義節 func([_|L]):-func(L). %第3定義節 ||?-test. aaaa yes LOOP = 11