プログラミング言語 Standard ML 入門 (問題の解答例)
7 データ構造の定義と利用

7.4 システム定義のデータ型

問 7.9

’a list -> ’a option 型を持つ以下の関数を定義せよ.

  1. 1.

    リストの先頭要素を返す関数 car

  2. 2.

    先頭を除いたリストを返す関数 cdr

  3. 3.

    リストの最後の要素を返す関数 last

解答例 

  1. 1.

    リストの先頭要素を返す関数 car
    fun car (h::_) = SOME h | car _ = NONE

  2. 2.

    先頭を除いたリストを返す関数 cdr
    fun cdr (_::t) = SOME t | cdr _ = NONE

  3. 3.

    リストの最後の要素を返す関数 last
    fun last nil = NONE | last [h] = SOME h | last (_::t) = last t