Untitled attachment
https://img.pawoo.net/media_attachments/files/112/157/541/494/152/901/original/76f973984d3a50f4.png
@CharNoe 詳細な回答をありがとう!アクションのマージは面白いアイデアですね。
言い忘れていたのですが、描画ソフトや編集ソフトのコンテキストでは、ステートはイミュータブルであるべきだと思います。そうすることで、部分構造の共有を利用し、メモリフットプリントを減らし、多くのステートを保持できるようになります。たとえば、小さなタイルで表現されるキャンバスを考えてみよう。そして、描画後に変更されなかったタイルは、次の状態のために同じメモリ位置を指し示したままになる。タイルを変更する場合、そのタイルのメモリのコピーがアクションの間編集可能にされ、アクションが終了すると、タイルは不変にされ、不変のルックアップテーブル(ツリー構造で表されることもある)に挿入される。挿入操作は、実際にはテーブルの新しい浅いコピーを作成する。作成されるステートの多くは、毎回少量のタイルやデータにしか影響しないという前提である。
もうひとつできることは、非常に古いステートをディスクにシリアライズし、そのファイルにかなり大きな制限をかけることである(できればユーザーが設定できる
076萌SNS is a social network, courtesy of 076. It runs on GNU social, version 2.0.2-beta0, available under the GNU Affero General Public License.
All 076萌SNS content and data are available under the Creative Commons Attribution 3.0 license.