エレファント・コンピューティング調査報告

極限に関する順序を論理プログラミングの手法を使って指定することを目指すブロクです。

関数プログラミングと無限論理多項式(18)

ブラウザーで計算する場合の仕様

ブラウザーで計算しサーバーから1回ずつ値を取り出す場合」では、イテレーターやクロージャーのような「参照透過性なし」の関数プログラミング的機能、またはオブジェクト指向のオブジェクトを使ってサーバー側のデータを保持しています。

1回目の値はサーバー側で計算して、それを取り出すところから始めます。この仕様をちゃんと書いていませんでした。

yield などのイテレーター的機能がある場合はその関数の中で、それ以外の場合はイテレーターを作る関数の中で初期化(最初の値を生成)します。ただし JavaScript(TypeScript) 版では、関数内で初期化すると、最初の値を生成するタイミングが難しいので、コンストラクターで初期化することにします。

ブラウザーで計算し Iterate 関数を使う場合」では、イテレーターの形で書くことが難しいので、Iterate 関数を使ってサーバーのデータだけを扱っています。しかしデータもオブジェクトとして保持しているので、Iterate(~) の式は間違っている(サーバー側のデータと考えれば正しい)ということになります。この件は「参照透過性あり」の場合を考えるときに検討したいと思います。