トップ «前の日記(2004-08-29) 最新 次の日記(2004-09-03)» 月表示 編集

日々の流転


2004-09-02 [長年日記]

λ. 同じ空の下で‥‥

サマーワで活躍する自衛隊を激励するFLASH。(logより)

λ. Re: Functor と Monad

圏論の普通の定義ではモナドは関手と二つの自然変換からなるので、MonadならばFunctorだというのはその通りです。ちなみに、[haskell-jp:51]によれば、「Goferで型クラスが導入されたとき」には「Monad になるためには、Functor でなければいけなかった」そうです。

で、両者の実装を変える理由ですが、やはり効率があるんじゃないでしょうか。例えばリストの場合、fmap f [a,b,c][f a, f b, f c] を計算すれば良いのに対して、liftM f [a,b,c][f a] ++ [f b] ++ [f c] を計算するので、多少効率が悪そうですし。

Tags: haskell

λ. "Graph Rewriting Semantics for Functional Programming Language", Marko van Eekelen, Sjaak Smetsers, Rinus Plasmeijer

Concurrent Clean とかの意味論で使われてる項グラフ書き換え系(TGRS, Term Graph Rewriting System)の説明と、その上での Uniqueness Typing の定式化。項書き換え系(TRS, Term Rewriting System)ではなく項グラフ書き換え系を用いるのは、共有を明示的に扱えて、関数型言語の実態に近いから。

そういえば、uniquenessの様な性質に関するpolymorphismのアイディアは"Quasi-Linear Types"にもあったな。

Tags: 論文