関数脳まとめ

前回の続き。
まずは、これまでの話をまとめてみる。


前々回。

  • 「現実物理世界」と「脳内写像世界」は(似て作られてはいるが)完全に別物。
  • 我々(の意識)は、「脳内写像世界」の中でしか生きていない。「現実物理世界」には存在できる余地すら無い。
    • 「現実物理世界」では純粋な物理現象しか起こっておらず、「映像」や「音」等の感覚を伴う現象は全て「脳内写像世界」の中にしか存在しない(「現実物理世界」では「光のまたたき」や「空気の振動」しか存在しない)。
  • これはつまり、我々の心や、我々が住んで感じている世界は全て、写像によって構成されているという事。大雑把に言ってしまえば全ては写像関数。だから、写像関数を楽に扱える関数型言語を「やらないか」。
    • ちなみに、「現実物理世界」自体も写像なのかどうかは、「現実物理世界」にアクセスする手段を五感としてしか持たない我々には、真とも偽とも証明する手段は無いと思う。


前回。

  • 一般的に、オブジェクト指向言語の説明が行われる際は、現実世界の物体を例に出して説明される事が多い。
  • しかし、現実世界の物体の属性の一つとして、「それが何年何月何日何時何分何秒の時の『それ』だったのか」という、時刻情報も含めた場合、とりあえず「状態」はアリとしても、「状態の変更」はほぼ不可能になってしまう(宗教的またはSF的な解釈を持ってこない限り)。つまり、全てのオブジェクトがimmutable(変更不可能)性を持ってしまう。
    • 今更気付いたが、結局、前回は「現実世界に状態は無い」という事は言ってない。ただ単に、あらゆる存在のimmutable性を言っただけだった。
  • オブジェクトがimmutableなら、ここに副作用は存在しない(少なくとも時刻情報を持つオブジェクトに関しては)。関数型言語の出番だ。
    • ちなみに、前回のリンク元を読んでもらえば分かるが、そういう風に考えると、「時間の経過」は(世界中の全オブジェクトに対する)「時間進行関数の適用」と見る事もできる。
      • この考え方を更に進める事もできる。興味のある人だけ自分でやってみましょう。


で、その辺を考えると、

  • 何らかの(ワールド?)シミュレータを作るなら、関数型言語やっといて損は無い。
  • 「心」や「判断力」、つまり、いわゆるAI作るなら、関数型言語やっといて損は無い。
  • 履歴やキャッシュ等、属性として時間属性を持つようなオブジェクトを扱うのなら、関数型言語やっといて損は無い。
    • ブラウザだって履歴を持つし、データのキャッシングは高速化の常套手段だ。しっかりしたものを作るのであれば多くの場合で、オブジェクトは時間属性を持つ必要があると思う。
  • 逆に言うなら、その辺に関わらないのであれば、関数型言語は別にやらなくてもok。

という事が言える。多分。


結論: どう見ても関数型言語のセールストークです。本当にありがとうございました。