prologでリスト処理
consとappendを書いてみた
cons
?- [user]. |: cons(X,Y,[X|Y]). |: % user://1 compiled 0.01 sec, 512 bytes true. ?- listing. cons(A, B, [A|B]). true. ?- cons(a,[b,c,d],X). X = [a, b, c, d]. ?-
append
リスト版
?- [user]. |: append(X,[],X). |: append(X,[Y|YS],[Y|Z]):-append(X,YS,Z). |: % user://2 compiled 0.01 sec, 372 bytes true. ?- listing. append(A, [], A). append(B, [A|C], [A|D]) :- append(B, C, D). true. ?- append([a,b],[c,d,e],X). X = [c, d, e, a, b] . ?-
アトム版(というかconsの逆バージョンの名前がわからない)
?- [user]. |: append(X,[],[X]). |: append(X,[Y|YS],[Y|Z]):-append(X,YS,Z). |: % user://1 compiled 0.01 sec, 624 bytes true. ?- append(a,[b,c,d],X). X = [b, c, d, a] . ?-
おもしろかった。