タグ

ブックマーク / tnomura9.exblog.jp (3)

  • モナドのKleisli圏 | tnomuraのブログ

    圏論からHaskellのIOモナドへの最短距離の近道を示してくれる文書を見つけた。 『モナドへの近道・Haskell からの寄道』 中村翔吾著 がそれだ。数学的にきちんと説明してあるので、読んですぐ理解できるようなものではないが、何となくIOモナドの考え方の雰囲気のようなものは伝わった気がする。 大げさな話になるが、この世界は何でできているかというと、いろいろな物とそれらのあいだの関係で成り立っていると言ってもいい。すなわち、世界のモデルの雛形として、集合Xと集合YとX->Yの関数 f(x) の集まりである関数の集合 Hom(X,Y) を考えることができるということだ。 たとえば、集合 X={1, 2} と集合 Y={a, b} からなる世界があり、X->Yの関数を集めた集合、Hom(X,Y) ={f, g} があったとする。すると、X, Y, Hom(X,Y) の三つの組みでこの世界は成

    モナドのKleisli圏 | tnomuraのブログ
  • RWH の読み方(21) 第3章 | tnomuraのブログ

    Real World Haskell 第3章 Defining Types, Streamlining Functions The Offside Rule and Whitespace in an Expression Haskell の仕様で唯一不満なところが、コードのインデントのルールであるこのオフサイド・ルールだ。ルールが複雑で、なかなか頭に入らないし、長大なインデントを全部 whitespace で記述しないといけない事が多い。 あとで文の説明に従って調べていくが、最初に言っておきたいことは、Haskell のコードのインデントに tab は使えないということだ。ファイルの行の左端からの whitespace の個数が意味を持ってしまうため、インデントに tab は使えない。長いインデントでも全て whitespace で記述しないといけない。 また、文にはないが、オフサイド

    RWH の読み方(21) 第3章 | tnomuraのブログ
  • Haskell 探検のおわりに | tnomuraのブログ

    Ubuntu で Hugs をインストールしてから思いがけずはじめてしまった Haskell の探検だが、そろそろ脳が飽和状態になったのでここらでいったんお休みにしたい。何となく Haskell に取り組むときのコツのようなものが分かった気がするのでまとめてみる。 1) Haskell の処理するデータは基的にはリスト(木構造も含めて)である。リストに表せるデータなら、非常に簡潔にデータの定義ができる。プログラムはデータ構造とアルゴリズムだという言葉があるが、Haskell ではデータ構造の定義が簡単にできる。 2) Haskell がデータを処理するときの基的な道具は、再帰である。再帰的な定義や関数に習熟すれば非常に簡潔で凝縮したプログラムを書くことができる。また、遅延評価は無限数列を使えるようにするための工夫だと割り切ると、無限数列を気軽に使えるありがたさが分かる。 3) Hask

    Haskell 探検のおわりに | tnomuraのブログ
    rydot
    rydot 2011/07/24
  • 1