モニャドセミナーには参加しなかったんだけど
Kuwataさんが日記にまとめてくれるだろう、と思っていたら案の定、だった。ぱちぱち。ありがとうKuwataさん。
※ モニャドセミナーの詳細はこちら
ということで、Kuwataさんの日記を眺めながら思った疑問というか、ツッコミというか。
この論法に従うと、しりとりの圏における文字列というのは以下のような型の関数になる。
"あ" = あ -> あ
"ああ" = あ -> あ -> あ
"あい" = あ -> い -> い
"あいう" = あ -> い -> う -> う
多分ですけど、その前に書いてあった、このしりとりの圏の定義にある
- 域
- 任意の HStr の最初の文字 first関数で取得できるものとする
- 余域
- 任意の HStr の最後の文字 last関数で取得できるものとする
だとするなら、"あ" も "ああ"も あ -> あ だと思います。
※ つか、"ああ"の型を あ -> あ -> あ = あ -> (あ -> あ) だと思えば、域は あ で余域が あ -> あ になるけど、なんかいきなりカリー化されてるけどいいのかしらん。余域が高階関数、圏でいう「べき対象」になっちゃうし、何より問題なのが、こう解釈してしまうと、例えば"ああ"と"あい"のしりとりが成立しなくなってしまいます。"ああ"の余域は (あ -> あ) で、"あい" の域である あ とは別物になるので。
域ってのは関数の入力の型で、余域は関数の出力の型。圏の射は(関数とみれば)常に1入力1出力なので、単に一番初めの文字が入力の、お尻の字が出力の型になるんでしょう。
じゃ、"あ" と "ああ" の違いは何かっつーと、実装の違いだと思うんですよね。型は一緒じゃないかなー。
って、セミナー出てないし、しりとりの圏もよくわかってないんですけどね。
そんな状態ですが、会社行きます。続き書くかも。→続き