えちょ記

語らないブログ

そんな辞書

で、実装しようと思ったけど微妙に眠いので、ロジックの概要だけメモメモ

  1. 取り込むデータの構造
    • 一塊のデータは、「キー1、キー2、‥‥キーn」と、「値1、値2、‥‥値n」で構成
    • 値とは、「トーク(トークそのもの、またはトークを返す関数)」または「キー」のいずれか
  2. 取り込み手順
    • キーはひとつずつ処理、最後のキーまで繰り返し
    • キーに対し、値の登録をすべて行う
    • 値がトークの場合はそのまま、キーに対して値を追加する
    • 値がキーの場合は、指定されたキーに対して割り当てられている値を参照し、その値に対し登録処理(再帰呼び出し

で、大体良いんだけど。循環参照を検出せねばならないわけで。えーと、キーを再帰呼び出しで遡る時に、同じキーが2回出てきたらアウトですにゃ。まあ、効率は置いといて素直に実装するなら、Listにキーをどんどん残していきつつチェックで良いっすかね。
むう、最近考え方が関数言語的になってきてるのを実感。いい事かどうかはわかりませんが(^^;