Prolog 写経記 その 71 write_list_delimited/2

(ほぼ) 毎日淡々と Prolog を写経します.元ネタはこちら.

Prologユーティリティライブラリ

Prologユーティリティライブラリ

今日は write_list_delimited/2 を写経します.

解説

write_list_delimited(List, Del)List の要素を Del で仕切って,現在の出力ストリームに出力する.

ふむ.

モード

write_list_delimited(+, +).

ふむ.

定義

では,こいつの定義を写経しませう.

write_list_delimited([], _).
write_list_delimited([X], _) :- !,
	write(X).
write_list_delimited([X | List], Del) :-
	write(X),
	write(Del),
	write_list_delimited(List, Del).

昨日のより全然楽♪
最初の節は停止条件,次の節はリストの要素が一つだけならそれを単独で出力.
最後の節はリストの要素が複数ある場合で,最初の要素を出力した後にデリミタを出力して,残りの要素を再帰的に出力,と.

では使用例を写経しませう.

2 ?- write_list_delimited([1, 2, 3, 4, 5], '+').
1+2+3+4+5

Yes
3 ?- write_list_delimited(['May', 'June', 'July'], ' ').
May June July

Yes

楽勝♪