そんな辞書
で、実装しようと思ったけど微妙に眠いので、ロジックの概要だけメモメモ
- 取り込むデータの構造
- 一塊のデータは、「キー1、キー2、‥‥キーn」と、「値1、値2、‥‥値n」で構成
- 値とは、「トーク(トークそのもの、またはトークを返す関数)」または「キー」のいずれか
- 取り込み手順
- キーはひとつずつ処理、最後のキーまで繰り返し
- キーに対し、値の登録をすべて行う
- 値がトークの場合はそのまま、キーに対して値を追加する
- 値がキーの場合は、指定されたキーに対して割り当てられている値を参照し、その値に対し登録処理(再帰呼び出し)
で、大体良いんだけど。循環参照を検出せねばならないわけで。えーと、キーを再帰呼び出しで遡る時に、同じキーが2回出てきたらアウトですにゃ。まあ、効率は置いといて素直に実装するなら、Listにキーをどんどん残していきつつチェックで良いっすかね。
むう、最近考え方が関数言語的になってきてるのを実感。いい事かどうかはわかりませんが(^^;