新歓ブログリレー2017phi16こんにちはphi16です。traPではプログラム担当です。今回はふしぎなおはなしをします。これもまた部内wikiから拾ってきたものです。プログラムではいろんなデータを扱うと思います。いろんなデータに対して操作を行って新しいデータを作り、情報を抽出したり。データとは何でしょうか。何を以ってデータと言うのでしょうか。情報を持っているはずでもそれを取り出す方法がなければ情報が無いことと同じです。暗号などはこれを基礎として作られていますね。逆に言えばデータというのは操作を伴って初めてデータとして存在しうるのです。データとは操作そのものではないでしょうか。呼ばれる概念があります。これは一般のデータが有限であるのに対して無限の情報を表現するものです。無限の情報をどうやってコンピュータで表現すれば良いでしょうか?内部は無限の情報であったとしても、データというのは本質的に操作によってでしか情報を取り出す事ができません。無限回の操作を行わなければ内部に無限の情報が含まれていることがわからないのです。「有限回の操作しか行わないこと」を以って無限のデータを実際に構築することができます。例はそんなに難しくはありません。&t;tはどんな情報を持っているでしょうか?left,rightは自分自身を指していますが、アドレスという情報を知らなければこれは全てのノードに1を持つ無限の二分木と区別が付きません。a;これも同じで、オブジェクト間の同等性を知ることができなければ無限に続く1の列と区別が付きません。このようにして無限のデータを表現する、Codataの概念を獲得することができました。これで何が出来るのでしょうか?通常のデータと何が違うのでしょうか。そんなおはなしをしていきます。最近はStream型として有名になってきたかもしれませんね。1つの具体例にすぎませんが。