Schemeでペアを使用する

※ 以下はScheme初心者である私の勉強用のメモです。

間違っている可能性がありますので注意してください。

ペア

 ペアとは2つ要素(element)を持つ構造体である。

Schemeにおけるペアのルール

  • 2つの要素はそれぞれcar部とcdr部として区別される
  • 異種のデータを混在して格納可能

 なお、carはContent of Address part of Registerの略で、「カー」と発音し、cdrはContent of Decremental part of Registerの略で、「クダー」と発音する。

ペアを生成する

 ペアを生成するにはcons式を使用する。

一般形
(cons オブジェクト1 オブジェクト2)
例1
> (cons 1 2)
(1 . 2)

 なお、ペアを組み合わせてペアを作ることもできる。

例2
> (cons 1 (cons 2 (cons 3 4)))
(1 2 3 . 4)


例3
> (cons (cons 1 2) (cons 3 4))
((1 . 2) 3 . 4)


ペアの操作を行う

car

 ペアのcar部を返すにはcarを使用する。

一般形
(car ペアを返す式)
> (car (cons 1 2))
1
> (car (cons 1 (cons 2 (cons 3 (cons 4 5)))))
1
> (car (cons (cons 1 2) (cons 3 4)))
(1 . 2)
cdr

 ペアのcdr部を返すにはcdrを使用する。

一般形
(cdr ペアを返す式)
> (cdr (cons 1 2))
2
> (cdr (cons 1 (cons 2 (cons 3 (cons 4 5)))))
(2 3 4 . 5)
> (cdr (cons (cons 1 2) (cons 3 4)))
(3 . 4)