174
6
章 無からのプログラミング
6.1.6
ペア
これでデータを数とブール値という形で扱えるようになりましたが、複数の値をまとめて格納するた
めのデータ構造がありません。複雑な機能を実装するためには、すぐにこうしたデータ構造が必要に
なるので、少し中断して導入しておきましょう。
最も単純なデータ構造はペア(pair)です。これは2要素の配列のようなものです。ペアを実装する
のは非常に簡単です。
PAIR = -> x { -> y { -> f { f[x][y] } } }
LEFT = -> p { p[-> x { -> y { x } } ] }
RIGHT = -> p { p[-> x { -> y { y } } ] }
ペアの目的は、後で必要に応じて使えるよう、2つの値を格納することです。
PAIR
は、
x
と
y
の2つ
の値を引数として呼び出すと、次のような内部procを返すものとして、構築することができます。
-> f { f[x][y] }
このprocは、別の
f
というprocを引数に呼び出すと、前の
x
と
y
の値を引数として
f
を呼び出し、
その結果を返します。
LEFT
と
RIGHT
はそれぞれ、第1引数もしくは第2 引数を返すprocで呼び出す
ことによって、ペアの左もしくは右の要素を選び出します。これだけで簡単に動きます。
>>
my_pair = PAIR[THREE][FIVE]
=> #<Proc (lambda)>
>>
to_integer(LEFT[my_pair])
=> 3
>>
to_integer(RIGHT[my_pair]) ...