bitterharvest’s diary

A Bitter Harvestは小説の題名。作者は豪州のPeter Yeldham。苦闘の末に勝ちえた偏見からの解放は命との引換になったという悲しい物語

2017-02-01から1ヶ月間の記事一覧

関手ー積と余積

6.7 関手ー積と余積 前回の記事で関手のおさらいをした。一段と理解が深まったことと思う。今回は、再び積と余積について論じよう。前々回では、双関手としての積と余積について述べたが、ここは、この話ではない。もう一度、積と余積の定義に戻って、そ…

市ヶ尾の横穴墓群と古墳群を訪れる

東京の冬は、寒い寒いと挨拶するときに常套句としてかわすが、本当は過ごしやすい。20年以上も前になるが、隣に住んでいたドイツ人が、東京の冬は素晴らしいといっていた。ドイツの冬はどんよりと曇っていて、夜の帳が下りるのも早いそうだ。今日は快適な冬…

関手―Haskellで関手をどのように理解したらよいか

6.6 Haskellで関手をどのように理解したらよいか 圏論の中で重要な概念の一つは関手(functor)だ。そして、Haskellでも最も便利な道具の一つはファンクタである。数回の記事の中で、いくつかの例を挙げながら、圏論での関手を説明してきた。また、それとの…

関手ー双関手

6.5 双関手 1)関手としての積と余積 前々回の記事で、Haskellが用意している関手のリストを示した。 Prelude> :i Functor class Functor (f :: * -> *) where fmap :: (a -> b) -> f a -> f b (<$) :: a -> f b -> f a {-# MINIMAL fmap #-} -- Defined…

関手ー圏の圏

6.4 圏の圏 圏と圏とをつなぐ射は関手という特別な名前がついているが射であることに変わりはない。従って、二つの関手を合成することもできるはずだ。図のように、三つの圏\({\mathcal C}\),\({\mathcal D}\),\({\mathcal E}\)を考えてみよう。\({\mathc…

関手ー一般化

6.3 一般化 \(Maybe\)を利用して関手を説明したが、その他にもいろいろな関手を考えることができる。それらは(\(Maybe\)で説明した)\(fmap\)の実装が異なるだけだ。Javaを知っている人であればインターフェースを用いて実装したらと考えるだろう。Haskell…

関手ー関手であることの証明

6.2 関手の証明 かつてバークレイの大学院生だった頃に指導教授からプログラムの正当性を研究テーマにしてみないかと誘いを受けたことがある。当時のプログラミング言語と言えばFortlanで、構造がぐしゃぐしゃなプログラムを検証することなど不可能だと直…

関手ー定義

6.関手 関手は圏論の中で最も重要な概念である。圏論では自然変換(natural transformation)が重要であるが、これの根幹をなすのが関手である。 6.1 関手の定義 圏論は数学的な構造を対象としての点と対象を結ぶ射としての矢印で表している。二つの圏が…

圏論での積と余積―代数的データ型

5.6 代数的データ型 引き続き、Bartosz Milewskiの動画を元に、話を進める。 1) 乗算(Multiply) デカルト積の圏について、前々回の記事で説明したが、積と名前がついているので、四則演算での乗算とかかわりがありそうである。 乗算\(\times\)は、交換律(…