bitterharvest’s diary

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

Haskellの難関モナドを突破するために掘り下げて学ぶ(4)

10.4 モナドを別の方法で定義する 前の記事デモなどを定義するときに\(>>=\)という関数を用いた。この関数の型シグネチャは次のようになっていた。 (>>=) :: \ m a -> (a -> m b) -> m b ここで、\(m\)を関手と考えてみよう。関手\(F\)は下図のように定…

Haskellの難関モナドを突破するために掘り下げて学ぶ(3)

10.3 プログラムの結合 前々回の記事で紹介した二つのプログラムを決後するフィッシュ・オペレータをHaskellで実現することを考えよう。二つのプログラムを結合するとは、下図を実現することである。 上図では二つのプログラム\(f,g\)がある。それぞれの…

Haskellの難関モナドを突破するために掘り下げて学ぶ(2)

10.2 集合と冪集合 数学は全く異なるものの間の中に共通する性質を見出し新しい概念を引き出すことを得意とする学問だ。ここでも、後でまさかと思うことを説明するのだが、その準備のために集合について少し説明しておこう。集合は要素の集まりと最初は…

Haskellの難関モナドを突破するために掘り下げて学ぶ(1)

10 モナドを掘り下げよう 圏論についての説明は前回の記事で一応終了した。しかし、ある事項についてはもう少し詳しく知りたいということがあるだろう。そのうちの一つはモナドだと思う。モナドは慣れてくるととても便利な道具なのだが、そこまでに行き着…

恋人までの距離(Before Sunrise)-再会を期しての別れの場面

ジェシーとセリーヌはウィーンの街へと繰り出す。かつてはハプスブルグ家がこの地に居城を開きヨーロッパの中心となっていた。さぞかし、有名な遺跡を巡るのかと思うとその期待は裏切られる。そう、二人にとっては観光旅行ではなく短いが楽しい時間そして愛…

恋人までの距離(Before Sunrise)-出会いの場面

専門分野の話は英語で話されても100%理解できる。しかし、映画となるとどうも心もとない。日常使うような言い回しを受験英語で学ぶことがほとんどなかったので戸惑いを感じるためだろう。先日、カリフォルニアに住んでいるEdとGayeから、来年の秋にハワイの…

若鶏のバスク風

鶏を丸ごと買ってきて作る料理を紹介しよう。頻繁に訪れる大型スーパーは周辺に外国人が多く住んでいるためかサイズの大きな肉が豊富に取り揃えられている。ステーキ用に300gサイズの豪州産牛肉が大量に並べられている。豚のステーキ肉も通常のものよりは2倍…

恩田川を散歩する

先日wowowで『4月の君の嘘』という映画を観た。高校生のラブストーリーだ。広瀬すずが扮するヴァイオリニストのかおりは余命いくばくもない。山崎賢人が演じる公生は天才的なピアニストととして幼いころは名をはせていたが、母親の死を境にしてピアノの音だ…

伊東丸山公園で紫陽花を楽しむ(7月11日訪問)

地元の歴史研究会の秋の例会で縄文時代の家族システムについて説明することになっている。その準備作業をするために伊豆に逗留することが多くなってきた。インターネットも使えないような山の中で、小鳥の鳴き声を聞きながら緑の木立に囲まれリクライニング…

関手圏

9.関手圏 9.1 小さな圏の圏 圏は、対象と射で構成されていた。そこで、対象を圏とし、射を関手とする圏を考えることができる。しかし、この圏を作るにあたっては少し制約を設けている。これは圏から圏を作るということになるので、集合の集合を考えると…

シュークルート:アルザス地方のキャベツの漬物とバーコン・ソーセージの煮込み料理

ザワークラウトが半分ほど残っていたので、これを使ったおいしそうな料理をということでシュークルートを作ることにした。ザワークラウト(Sauerkraut)はドイツ語でキャベツの漬物である。もともとの意味は酸っぱいキャベツだ。この酸っぱさは、酢からではな…

自然変換

8. 自然変換 圏論の話もそろそろ終わりに近づいてきた。これまでの話の中で重要であった話題は、圏そのものと、関手である。圏は計算の構造を示し、関手は構造を維持しての圏から圏への射を与えてくれる。今回は、この二つの概念に劣らないほどに重要な自…

サーモンと玉ねぎ・ピーマンのクリーム煮

オーブン料理は簡単でよい。手間をかけずに調理できるのにもかかわらず、食卓に並べたときは高級感を醸し出してくれる。このギャップを料理人は楽しむことができる。経済的な言葉を用いれば、費用対効果に優れているということだろう。でも、良いことばかり…

写像対象-カリー=ハワード同型対応

7.9 カリー=ハワード同型対応 世の中には、言い方は違っているのだが、同じことを言っているということが往々にしてある。前回の記事で、型定理と圏論は一対一に対応づけできると説明したが、その例の一つである。さらに、もう一つ対応するものがある。…

写像対象-型定理(続き)

7.8 具体例 指数対象\(A^{B+C} = A^B \times A^C\)は、Haskellの型シグネチャで表すと、 \begin{eqnarray} Either \ b \ c \rightarrow a \sim (b \rightarrow a, c \rightarrow a) \end{eqnarray} となることを前回の記事で説明した。それでは、この型シ…

写像対象-型定理

7.7 型定理(Type Theory) 型定理という言葉に戸惑う人も多いことと思う。日本語版のウィキペディアで型理論を検索するとあまりにも短い記述にがっかりするだろう。得られる情報も余りない。しかし、さすがに英語版の方には詳しく書いてある。その記述の中…

写像対象-指数対象

7.6 指数対象 写像対象には別の表現法がある。また、こちらの方がよく知られてもいる。それは指数対象と呼ばれる。対象\(A\)から対象\(B\)への射の集まり\(A \Rightarrow B\)を写像対象と呼んだ。同じように射の集まりなのだが、ドメイン\(A\)を肩に、コ…

写像対象-Haskellで表現する

7.3 写像対象とは ここでは写像対象を定義することにしよう。前回の記事で写像対象を説明するための図として下図を提示した。 上図で、\(Z\)は最善の表現であるとすると、これは\(A\)から\(B\)への可能な写像を重なることなくすべてを含むような関数の集…

伊豆箱根鉄道駿豆線沿いの遺跡を訪ねる

伊豆箱根鉄道駿豆線は東海道線の三島駅から伊豆市の修善寺までの19.8Kmを結び、車窓からは富士山を楽しむことができるローカル線だ。歴史的遺産が多く楽しむことができる。今回はこの路線の近くにある古い遺跡を訪れた。三島市の中心にあるのが伊豆国分寺で…

写像対象―入門

しばらく休みを頂いたが、この間、古代史の関係の書物を読み漁った。特に、松木武彦さんの本が気に入った。 『美の考古学:古代人は何に魅せられてきたか』と『旧石器・縄文・弥生・古墳時代 列島創世記」を、また、共著だが『弥生時代って、どんな時代だっ…

サラダたまねぎでコース料理を楽しむ

春の訪れとともに、水俣の復興に協力されている方から、新玉葱が送られてくる。これは「サラダたまねぎ」という名前で売られている。その名の通り瑞々しさが売り物だ。水俣の特産品を紹介しているブログには、「サラダたまねぎは、早い時期に収穫する(極早…

神奈川県中央部の勝坂遺跡公園を訪ねる

相模線にゆられて縄文の遺跡を訪ねた。これは横浜から出ている相模本線ではない。JRだ。神奈川県の中央部を縦断するように、東海道線茅ヶ崎駅と横浜線橋本駅の間を結んでいるローカル線だ。東京の近郊には珍しい単線運転でもある。往きは小田急線の海老名駅…

プログラマーのための圏論(中)

『プログラマのための圏論』は(上)の後の部分をまとめ(中)にしてPDFファイルにしました。参考にしてください。なお、(上)のホームページはこちら。

関手ープロファンクタ

6.10 プロファンクタ 1)双関手の復習 プロファンクタの話をする前に、双関手を再度勉強しておこう。関手と反関手は矢印が逆向きであるという関係を有していたが、双関手とプロファンクタも同じような関係にある。Haskellでは双関手はData.Bifunctorで…

関手―反関手

6.9 反関手 以前に、Readerと呼ばれる関手について説明したことがある。二つの射を得て一つの射を出力するという分かりにくい関手だったのではと想像している。圏論は、射を中心にして考えるので、射を射の入力や出力として利用するのは自然なのだが、値…

秦野市桜土手古墳公園

小田急線を利用して秦野市にある古墳を見に行った。最寄り駅は渋沢である。北口に出てまっすぐに丹沢の方に向かって歩く。島津製作所や日産自動車などの工場街の中にあるのが桜土手古墳公園だ。 中に入るとすぐにこんもりと盛り上がった小さな丘がある。古墳…

関手―余積をファンクタで実現する

6.8 余積をファンクタで実現する 前回の記事では関手を利用しての積と余積を定義する中で\(Identity\)を用いたが、その詳しい説明はしなかった。そこで、ここでは、まず、データ型\(Identity\)の定義から話を始めよう。関手\(Identity\)の互換図は下図の…

関手ー積と余積

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\)は、交換律(…

圏論での積と余積―余積

5.5 余積 オーストラリアオープンテニス2017は、昨日、男子決勝戦が行われた。テニス界のレジェンドといわれるフェデラーとナダルが決勝で争うこととなり、これ以上、楽しませてくれる組合せはなかった。 グランドスラムの優勝回数で、二人は歴代の1位と2…

圏論での積と余積―デカルト積

5.4 積の圏 1)デカルト積 デカルト積(Cartesian Product)は、直積集合、直積、積集合などと呼ばれたりする。これは集合の集まりに対して、それぞれの集合からひとつずつ元を取り出して組にしたものである。 例えば、二つの集合\(A,B\)に対し、それらの…

圏論での積と余積―双対という概念

5.3 双対という概念 普遍性(Universal Property)は圏論の中では重要な概念である。前回は、始対象と終対象について論じた。対象という言葉は、何かの集まりを表したものであり、抽象的な概念である。対象は、集合であるかもしれないし、グラフのノードの…

豚肉のシードル煮込み(北フランスノルマンディー地方)

横浜の港北ニュータウンにあるノースポートを訪れたとき、ブルーミング・ブルーミーというスーパーマーケットでシードルを発見した。シードルは、フランスのノルマンディー地方のお酒で、ブドウの代わりにリンゴを発酵して作られる。シードルを知ったのは、2…

我が家の定番になりだした「だし巻き卵」

正月気分もそろそろ終わり。昨日(7日)の朝は七草がゆを食べて、正月との折り合いをつけて、今年の活動を開始する。この日は、川崎の等々力緑地にある市民ミュージアムに講演を聞きに行く。暮れにも参加したので、連続で「かながわの最初の現代人」の話を伺っ…

ハンガリー料理のパプリカチキンを味わう

NHKのBSプレミアムで、朝ドラの「べっぴんさん」を見た後、テレビをそのままにし、新聞を読み始めた。そうこうしているうちに、ハンガリーという言葉が耳に入ってきたので、ふとテレビの方に目を向けると、ヨーロッパ鉄道の旅をしている関口知宏さんがセルビ…

圏論での積と余積―終対象と始対象

今年最後に読む本を定めて、28日に市の図書館から網野義彦著『日本の歴史のよみなおし(全)』と山本淳子著『源氏物語の時代 ― 一条天皇と后たちのものがたり』を借りた。『日本の歴史のよみなおし』は、中世の時代を中心にいくつかのテーマに沿って横断的に説…

モナドを音楽の力を借りてアナログ的に説明する

4.8 モナドを関手(ファンクタ)を用いずに説明する 数学の本を読んでいると、1ページを読むのに数時間もかかることが往々にして起きる。特に、定理があってその証明が書かれているときがそうだ。純粋な数学的用語で書かれているときは、その背後にある概念…

ブライン液につけて、ジューシーなターキーを食卓に

今年もまた、ターキーを焼く季節がやってきた。孫や子供たちの都合によって、作る日は異なる。今年は、23日がよいということなので、クリスマスイブのさらにイブに食することとなった。ターキーの焼き方は、イギリス滞在経験の長い隣の家から教えて頂いた。…

ドイツ料理「リンダールーラーデン」を楽しむ

クリスマスが近づくとシュトレン(Stollen)を見かけるようになる。ドイツの菓子パンだが、伝統的にクリスマスの時期に食されている。先日、Kaldiで大量に販売していた。季節ものなので購入したが、少し、甘すぎるかなと感じた。そうこうするうちに、ドイツ料…

称名寺(金沢文庫)を訪れる

称名寺を訪ねた。森茂暁著『闇の歴史、後南朝』を読んだのがきっかけになった。室町時代の幕開け(1336年)とともに始まった南北朝時代は、1392年に北朝が南朝を吸収して合体することで終了する。その後の歴史は合体を主導した側(北朝)を中心に描かれた。そし…

国宝・円覚寺舎利殿を初冬に訪れる

何回となく訪れたことがある円覚寺だが、舎利殿だけはいつも遠目に見るだけで、訪れたことがない。今回(12月10日)、運よく、舎利殿を訪れるイベントがあり、それに参加した。円覚寺は、鎌倉時代の1282年に建立された。モンゴル帝国(元)が日本を攻めてきた元…

寒くなったらボルシチ

野菜売り場の店頭でビーツを見かけることが多くなった。先日のテレビによれば、昨年に比べて7倍も売り上げが増えたと野菜売り場の担当者が伝えていた。ビーツは、英語ではbeetrootという。赤蕪とも聞いていたので、カブの一種かと思っていたが、そうではない…

秋深き伊豆修善寺を訪れる

11月末(27日―30日)に別荘の冬仕度をするために伊豆に出かけた。旅行する3日前(24日木曜日)には、東京では観測史上初の11月の積雪を記録した。我が家の庭もちょっとした風情を感じさせる冬景色になった。 伊豆は暖かいところと思われがちだが、別荘のある地帯…