2005-08-25 [長年日記]
λ. 今日のorz
LLDNのプログラムからリンクされてないなぁと思って確認したら、送ったメールが 550 User unknown でエラーになってたというオチ。なんで今日まで気づかなかったんだ俺。orz
λ. 人間や生物や生態系を設計したやつは余程のバカだね
メモ。へー、そうなのか。面白い。
λ. ファンクタ(functor)とは
- http://d.hatena.ne.jp/yoriyuki/20050821#p3
- http://d.hatena.ne.jp/lethevert/20050822
- http://d.hatena.ne.jp/yoriyuki/20050822#p1
- http://www.jmuk.org/d/?path=2005/08/22#d22t03
私もファンクタの原義については知らなかったので、向井さんと同じく目から鱗だった。
MLのfunctorは確かに圏論の関手として解釈できないこともない。moduleのsignatureは型の名前と値の名前で構成されているので、適当な操作を施せば圏として解釈できる。moduleはこの圏から通常のデータ型と関数からなる圏への関手の一種。そういった関手の全体は圏になる*1ので、MLのfunctorは、あるsignatureのmoduleからなる圏から、別のsignatureのmoduleからなる圏への関手。 もっとも、それを意図してfunctorと名づけられているかと言われれば微妙な気はするけど。
(2005-09-03 追記) Computational Category Theory の 3.5.1 Functors computationally に次のように書いてあった。
The word `functor' is rather overused, occurring not only in category theory but also as programming constructs in languages like Prolog and ML (the latter is related to the categorical notion of functors).
(2005-09-04 追記) そういや、Prologのfunctorは「引数を与えられることにより式を構成する構文的な要素」 の意味か。
*1 ダイアグラムの圏のようなもの