02.05.2013 Views

圏 論 に よ る プログラミング と 論 理

圏 論 に よ る プログラミング と 論 理

圏 論 に よ る プログラミング と 論 理

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

序章 前書き<strong>に</strong>代えて<br />

こん<strong>に</strong>ちは. 皆さんは<strong>圏</strong><strong>論</strong> (category theory) <strong>と</strong>いう<strong>理</strong><strong>論</strong>をご存知で<br />

しょうか?<br />

「なんて読むんですか? けんろん?」<br />

「<strong>よ</strong>くわからないけど変わった数学らしい」<br />

「モナド<strong>と</strong>いう概念があって, Haskell はそれで⼊入出⼒力<strong>と</strong>かを実現してい<br />

て, 実はそれは<strong>圏</strong><strong>論</strong>の概念なんでしょ」<br />

……等々, いろいろな反応があ<strong>る</strong><strong>と</strong>思います.<br />

Haskell などの関数型<strong>プログラミング</strong>⾔言語のおかげで<strong>圏</strong><strong>論</strong>の知名度は⼀一<br />

般のプログラマーの間でも上がってきていますが, 「モナドがあって...」<br />

<strong>と</strong>いう以上の<strong>理</strong>解は⼀一般的<strong>に</strong>あまり得られていない⾯面があ<strong>る</strong><strong>と</strong>思います.<br />

また, <strong>プログラミング</strong><strong>に</strong>おけ<strong>る</strong><strong>圏</strong><strong>論</strong>の応⽤用<strong>に</strong>はさら<strong>に</strong>⾯面⽩白い側⾯面があ<strong>る</strong>の<br />

ですが, その部分はほ<strong>と</strong>んど注⽬目されていない<strong>よ</strong>う<strong>に</strong>思えます. その上,<br />

<strong>圏</strong><strong>論</strong><strong>に</strong>関す<strong>る</strong>プログラマーのための⽂文献は少なく, せっかく興味を持って<br />

も勉強しづらい<strong>と</strong>いうのが現状でしょう.<br />

この現状を憂えたわたしたちは, <strong>圏</strong><strong>論</strong><strong>に</strong>関す<strong>る</strong>総括的な⼊入⾨門記事を書く<br />

こ<strong>と</strong><strong>に</strong>しました. また同時<strong>に</strong>, <strong>論</strong><strong>理</strong>やラムダ計算, プログラムの再帰構造<br />

など<strong>に</strong>ついても解説しており, 全体<strong>と</strong>して関数型<strong>プログラミング</strong>の<strong>理</strong><strong>論</strong>的<br />

な基礎を⼀一から学べ<strong>る</strong><strong>よ</strong>う<strong>に</strong>なっています. この記事が皆さんの<strong>理</strong>解の⼀一<br />

助<strong>と</strong>なれば幸いです.<br />

記事の構成<br />

この記事は 3 部構成です. それぞれ「基礎<strong>理</strong><strong>論</strong>」, 「<strong>圏</strong><strong>論</strong><strong>と</strong>プログラミ<br />

ング」, 「<strong>圏</strong><strong>論</strong><strong>と</strong><strong>論</strong><strong>理</strong>学」<strong>と</strong>題しています.<br />

第Ⅰ部では, <strong>圏</strong><strong>論</strong><strong>に</strong>ついて学ぶ前<strong>に</strong>押さえておくべきこ<strong>と</strong>を解説します.<br />

まず初め<strong>に</strong>, 集合や写像, <strong>論</strong><strong>理</strong>などのごく基礎的な知識を第 1 章で扱い<br />

ます. 読んでいてわからない⽤用語などがあれば, 適宜ここを⾒見返す<strong>と</strong><strong>よ</strong>い<br />

でしょう.<br />

第 2 章ではラムダ計算<strong>に</strong>ついて扱います. 特<strong>に</strong>単純型付きラムダ計算<br />

(λ→) <strong>と</strong>その拡張を形式的<strong>に</strong>定義します.<br />

173

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!