2008-04-06

Haskell 勉強会 #10

今回で全部読み終わる予定だったけど、大幅寝坊で1時間遅刻。最後の部分はすでに読み終わって、質疑をしているところだった。作った関数がモナド則を満たしているかを証明、みたいな議論をしていたようだ。

最初は何の話をしているのか理解しようとしたものの、途中で諦めて自分で該当部分を読むことにした。残念ながら時間切れで全部は読めなかったので、ここは自分で復習が必要。この本、最後だけ急に難易度が高いから理解しきれんかも。

で、後半はA Gentle Introduction to Haskell, Version98を読んでいった。実は告知ページ斜め読みしてて理解してなかった (ネタ変えて続くんだー、程度の認識) んだけど、そこは「持っててよかった emacs + w3m + eblook」。

なにしろ英語なので「1 人 1 パラグラフずつ音読してから、各人の理解を言いあう」みたいな感じに進め方は変更された。英文をみんなで読む時は音読するのが良いらしい。確かに、記号とか難読単語のオレオレ読みが防げたりして結構よさげな感じ。

タイトルと違ってまったく gentle じゃないんだけど、扱っている内容自体は「ふつうの Haskell」+αくらいらしい。モナドの全てを事前に読んでおくとαの部分が理解しやすいとのこと。

以下、読んだところのメモ。

2Values, Types, and Other Goodies

  • value は全て first-class
    • つまり、引数として関数に渡したり、結果として返されたり、データ構造に埋めこんだりできる
  • type は first-class ではない
    • value を説明するもの
  • type と value の関連づけを typing と呼ぶ
  • 関数は「=」で宣言する
  • type は「::」で宣言する
  • static type イイヨイイヨー
    • type をとり違うことがない
    • コンパイル時にエラーを拾える
    • コンパイラが効率的なコードを吐ける
  • type 推論が超強力
    • でもドキュメンテーションとして明示的に type 宣言するのがおすすめ

2.1 Polymorrphic types

  • universally quantified 「任意の」
  • haskell の type variable は全て universally quantified
  • 特定の type と区別するために小文字で書く
    • 「[Int] → (Int 型の) 値のリスト」
    • 「[a] → (任意の型 a の) 値のリスト」
  • パターンマッチは直感的
  • polymorphic type における一般化の順序の話
    • うまく型付けされていれば、principal type を持つことが保証される
    • principal type は自動推論される
    • principal type → その型に含まれるインスタンスを過不足なく一般的に表現した型
    • head の例: principal type は [a]->a
      • [b]->a とか a->a とか a もあてはまるけど広すぎる
      • [Integer]->Integer もあてはまるけど狭すぎる
    • principal type があるのは、[http://d.hatena.ne.jp/wasisan/20080309/p4:title=Hindley-Milner 型システム]の売り

2008-01-14

Kanasan.JS JavaScript第5版読書会#02

今回は、午前中は Lightening Talk、午後は読書会の 2 部構成で、人数も 40前後、東京からの参加者もあり、と、読書会というよりはイベントと呼ぶのが適切な賑やかさだった。1 回目の時も人数にびっくりしたんだけど、やっぱりすごいね。

午後 (13:00~16:30 の 3 時間半) の読書範囲は、6 章「文」と 7 章「オブジェクトと配列」 (P.81~P.122)。読んでる時は全然余裕なかったけど、前回が P.15~P.80 だったことを考えると、結構スローペースだったのかも知れない。

読書中の議論は平均して高いレベルを維持していた。一応本を中断してついていこうとはしてたけど、途中で諦めた。
Lingr そっちのけでひたすら読むことに集中している True 初心者はどれくらいいたんだろ。会話がいい感じに弾んでいたことと、勇気を出しておバカ質問を何度かやってみた感触を考えると、私と同じ層の人 (辛うじて本を読みながら Lingr を見ることができるけど、そこの会話は理解できない) はいなさそうな感じ。

ログは Lingr に残っているので、個人的なメモをいくつか。

  • 式と文の違いはとても重要 (by amachang さん)。読書会的には、「式は値を返すもので、文は値を返さないもの」とまとめられたけど、まだちょっとしっくり来てない。実際にコードを書きながら注意していくしかないかなぁ。
  • 関数定義最初に解析されるので、(それが使用されるスコープ内であれば) どこに書いてもいい
  • 同名の関数定義は、後のもので上書きされる
「配列の要素をオブジェクトに追加することができる」というのが謎。
var c = new Object;
c[0] = "this is an array element of an object!"
Array クラスの特性を何も持っていない (length プロパティも使えないし pop も shift も出来ない) なら、それ (c[0]) は配列の要素っぽい表記に見えるだけで、単純に '0' という識別子をもったプロパティなだけに思える。んだけど、わざわざ配列の要素って書くからには何か違う部分があるってことだよね……。
理解できなくても使う上では困ることはなさそうだけど、なんかスッキリしないのが残念。

2007-12-16

プログラミング言語AWK

プログラミング言語AWKプログラミング言語AWK
アルフレッド・V. エイホ ピーター・J. ワインバーガー ブライアン・W. カーニハン

トッパン 1989-11
売り上げランキング : 344441
おすすめ平均

Amazonで詳しく見る
by G-Tools

Stack Stock Books経由で、namuさんに借りてきた。シェルスクリプトの中で慣用句のように使うばかりだったので、ここらでちゃんと使えるようになろう、という目論見。

AWKの本は古いものが多い(これもあって買う気がおきなかった)んだけど、無事読み終わったら、リファレンスとして買うのもアリかしら。

ひとまず、1章と2章を読もうとすると寝てしまうので、3章から読みはじめて、演習問題をやっつけながら随時読み返す方向で進めることにする。

2007-11-30

KDR#05

The Debian System を読む、の5回目。

会場は、言語系の読書会でよくお邪魔している Mebic にしてみた。そこそこの値段で無線 LAN が使えるのはありがたい。ついでにプロジェクタも借りてみたけど、うーん、いまいち活用できなかったかな。どう使うか、が難しい。



というわけで、今日は dpkg でのアンインストールから dselect (笑)経由で APT のさわりまで読んだ。

他の人が「やっとAPTに来たー」と盛りあがっている(ように見える)のが興味深い。dpkg は完全に黒子で、存在すら忘れられつつあるんじゃなかろうか。

dpkg のオプションは、--ignore-depends はたまに使う、くらいで他はほとんど知らなかった。もっとも、すぐに APT が矯正してくださるので、システム上でその状態が長く続くことはないんだけど。

後は、エラーへの対処が面白かった。あのやり方でよかったんだー、とか、こんなこと出来たのかー、とか。最近はひどいエラーに出会うこと自体が余りなくなってきたけど、いざという時に役立ってくれそう。

2007-11-26

廃墟の再利用

最近読書会づいていて幸せなので、放置していたbloggerの領域を再利用して読書記録でもつけるかー、といろいろいじってみた。

しっかし、過去にまずは英語で日記を書こうとして挫折(2005)し、一念発起して英語の読書記録として再利用しようとして挫折(2006)したようすが垣間見えて微笑ましい。

次の再利用までどれくらい続くかなぁ(わらい

2007-11-24

StackStockBooks

蔵書管理をしたいなーとは思いつつ、なんとなく今までのには手を出していなかったんだけど、某読書会で作者さんから紹介されて、面白そうだったので早速登録してみた。

登録、未読管理も、簡単にできるのでいい感じ。これで遊ぶにはちゃんと読まないといけないけど。


  • 書籍を登録する携帯アプリは現状iモードのみ。Willcomはそのうち対応するかも、とのこと

  • 登録できるのは amazon.co.jp のデータだけみたい。amazon.comは無理なのかな

  • 本の中の進捗も保持できたら嬉しい?(50%終わった、とか)

CodeComplete2nd読書会#05

運よく誘っていただいて、13章以降を読んできた。13:00から18:00くらい?まで、総勢8名ほどでひたすら読んで、最後まで読みきってしまった。びっくりだ。さすがに後半はあちこちから疲労の訴えが出ていたけど……(わらい

話を聞いていると、他の人はおおむね情報系を専攻している/いた学生さんのようだ。なので、高度な雑談の方は何とかスルーして、読み進めることに力を注いだ。各章とも、なんとか遅れずに理解し(たつもりにはなっ)てついていけた……はず。

終わった後はピザとコーラを貪った。差し入れはケーキよりピザ代の方がよかったかも。

事前に4章までは読んでいたので、あとは5章から12章まで。次回の某読書会までには終わらせておかねば。