「型システム入門」(TAPL 日本語版)の発売を記念して、型にまつわる何かを書こうと思い、とりあえず型レベルプログラミングでの Quine に挑戦して見ました。 TAPL の内容には全く関係ありません。型クラスは発展的なものなので、入門書である TAPL には名前しか出てきません *1 。型クラスまで書かなくても 500 ページ超の本になるので、型の世界は奥が深いですね。 デモ ソースはこちら。 ref: https://github.com/mame/type-level-quine/blob/master/type-level-quine-poc.hs 最後の 2 行に注目。 main = putStr $ show quine quine = undefined :: Q X0 b (...) => b わけわからん型注釈がついてますが、要は quine = undefined なこ
![Type-level Quine (未完) - まめめも](https://cdn-ak-scissors.b.st-hatena.com/image/square/8a3e1bf4ab9a9717dc94412ed34ba733ff62f547/height=288;version=1;width=512/http%3A%2F%2Fg-ecx.images-amazon.com%2Fimages%2FG%2F09%2Fnav2%2Fdp%2Fno-image-no-ciu.gif)