更新日: お返事ありがとうございました。昨晩と今夜、私はいくつかのアプローチを試してみました。ジェフが以下に示すようなアプローチを思いつきました。私は彼のアップデートで提案したことを既に実行していました。ここではコードがありますが、この時点ではそれ以上はっきりときれいに見えませんが、何度もパフォーマンスを強化するために何かを変えてきました。追加を行うときに、古いノードを再利用するように - - p
特定のオブジェクトを使用できないときに読み込むことができる透過キャッシュを実装しようとしています。つまり、(name)でインデックスされた既存のオブジェクトを返すことができます。 loader' objs name = case findObj objs name of
Nothing → (new_obj, loader' new_objs)
Just obj → (obj,
パフォーマンスのために関数の結果をメモしたい、つまり、関数の引数にインデックスされたキャッシュを遅延して読み込む必要があります。私が関数を初めて呼び出すとき、キャッシュは入力引数のための何も持っていないので、それを計算し、それを返す前にそれを格納します。後続の呼び出しはキャッシュを使用するだけです。 しかし、SQL Server 2000では、機能が「確定的」であるという愚かな恣意的なルールがある