2010/03/10

9LISP - 011 をやりました

先週の土曜日に開催されました。
内容を書くのが遅くなってしまいました。

また、オンライン中継を行なう予定でしたが、ネットワーク不調のため急遽中止ということになり、オンライン参加予定だった方、のぞいてみる予定だった方、すみませんでした。
しかし、Google WaveとSkypeを使ったオンライン自習会が開催されたようです。すげー。

 

あと前回、「裸に見えるジェネレータ」について話が出てましたが、@aharisuさんがクローン(?)を作ってました(笑)前回9LISPの次の日には作ったんだとか。しかもandroidアプリにしてました(笑)@aharisuさんはいつもすごい。

 

概要

  1. 今後の進め方について
  2. 前々回、前回の復習
  3. 問題を解いてみる
  4. クロージャ
  5. C#とかJavaとか
  6. オンライン参加

1.今後の進め方について

  • 現在は高階関数をやっている
  • 次(継続)に進むか?それとも高階関数について深めるか?
    • もっと例題を解いてみたり、現実的な問題を解いてみよう
    • SICPの図形言語とかどうかな?
    • 次回までに高階関数、クロージャ関連の練習問題を探してみる

2.前々回、前回の復習

  • 前々回
    • The Little Schemer の rember(remove member), rember-f(高階関数) insertL, insertR, insert-g(高階関数)
  • 前回
    • map, fold, for-each を自前で定義してみる
    • fold, unfold とか

 

3.問題を解いてみる

  1. ループを使わずに配列を逆順に
  2. ループを使わずに1~10の総和を
  3. xにf, gを適用させるcompose
  4. xにn回fを適用するrepeated

1は最近、2は以前流行ってたので。3, 4はSICPの2章から。

関数合成、curry化、部分的なcurry化など。

コードは例えば以下のようなもの。

4.クロージャ

  • レキシカルスコープ
  • クロージャの簡単な例
    • counter など
  • C#のクロージャだとステップデバッグでわかりやすい
  • C#のラムダ式
  • クロージャで簡易OO的なもの
  • クロージャって、newしたクラスのインスタンスに似てるよね
  • クロージャがあればOOできるしOOがあればクロージャできる
  • map, for-each, fold の例、動作イメージなど

高階関数やクロージャに馴染みのない参加者の方もいます。ホワイトボードにたくさんSchemeのコードを書きました。

5.C#とかJavaとか

  • Javaのインナークラスでクロージャもどきできるよね
  • C#のクロージャも結局はインナークラスだよ
  • C#でクロージャ書いてdisasmしてILのぞいて見よう
  • クロージャをステップデバッグしてみよう

VSのステップデバッグわかりやすい。

オンライン参加

カメラ、多人数用のマイク、プロジェクターなど準備はできていたもののネットワーク不調によりネットできず断念。

  • 自習会が開かれた模様
    • Google Wave + Skype + Twitter

ネットワーク不調は改善されたようなので、次回こそは中継できそうです。

追記

オンライン自習会のまとめが書かれていました!

The Little Schemer, 4th Edition計算機プログラムの構造と解釈

1 件のコメント:

  1. ちょ、なんで女性の裸(笑) >オンライン自習会のまとめ

    返信削除