Prolog 写経記 その 16 last/2

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

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

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

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

解説

last(List, X)XList の最後の要素に具体化する.

ふむ.Java でいうと LinkedList#getLast() みたいな.

モード

last(+, ?)

お,めずらしく第 1 引数は必須.
まぁ,第1引数が不明瞭だと X を最後の要素とするリストは無限にありそう.

定義

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

last([X], X).
last([_|List], X) :-
	last(List, X).

簡単♪

注記

空リストに適用すると last/2 は失敗する.

空リストは要素じゃないし,[_|List] にもマッチしませんからねぇ.

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

2 ?- last([john, bob, tom], Who).

Who = tom 

Yes
3 ?- last([7, -3, 1, 4], 6).

No
4 ?- last([], X).

No

ふむ.
特にどうということもなく.
何も考えずにただ写経しただけという感じ.まぁ,たまにはこんなのもいいでしょう.