第190回 素人くさいSICP読書会(at 月島某所)

  • 会場提供&お菓子&コーヒーありがとうございました
  • 8時ちょっと前に月島駅の改札に着いたら誰もいなくてマジで心が折れた
  • 結局、改札で1人、コンビニで1人、現地で1人追加で計4人(弾さん入れて5人)
  • 雑談は他の人にまかせて、ひとりだけSICPの問題やってた
  • 雑談はよく聞いてなかったけど盛り上がってたぽい
  • 月島の最大のミッションは弾さんを退屈させないこと(ともんじゃ)だと思っているので、まあよかったのではないかと
  • 問題5.21
  • 先週書いたaのコードが処理系でちゃんと動くことを確認(assignが一箇所だけassginになってたけど)
  • 結果はvalの値
(define count-leaves-machine
  (make-machine
   '(tree continue temp val)
   (list (list 'null? null?)
         (list 'pair? pair?)
         (list 'car car)
         (list 'cdr cdr)
         (list 'not not)
         (list '+ +))
   '(
       (assign continue (label count-done))
     count-loop
       (test (op null?) (reg tree))
       (branch (label immediate-answer-null))
       (assign temp (op pair?) (reg tree))
       (test (op not) (reg temp))
       (branch (label immediate-answer-not-pair))
       (save continue)
       (save tree)
       (assign continue (label aftercount-car))
       (assign tree (op car) (reg tree))
       (goto (label count-loop))
    aftercount-car
       (restore tree)
       (assign tree (op cdr) (reg tree))
       (assign continue (label aftercount-cdr))
       (save val)
       (goto (label count-loop))
    aftercount-cdr
       (assign temp (reg val))
       (restore val)
       (restore continue)
       (assign val (op +) (reg val) (reg temp))
       (goto (reg continue))
    immediate-answer-null
       (assign val (const 0))
       (goto (reg continue))
    immediate-answer-not-pair
       (assign val (const 1))
       (goto (reg continue))
    count-done)))
  • bがなかなかうまく書けなくてタイムアップ
  • もんじゃは1人帰って、もんじゃからが1人でやっぱり4人
  • 人生相談会だった


  • で、問題5.21 bはあとで書いた
(define count-leaves-machine
  (make-machine
   '(tree continue temp n)
   (list (list 'null? null?)
         (list 'pair? pair?)
         (list 'car car)
         (list 'cdr cdr)
         (list 'not not)
         (list '+ +))
   '(
       (assign n (const 0))
       (assign continue (label count-done))
     count-loop
       (test (op null?) (reg tree))
       (branch (label immediate-answer-null))
       (assign temp (op pair?) (reg tree))
       (test (op not) (reg temp))
       (branch (label immediate-answer-not-pair))
       (save continue)
       (save tree)
       (assign continue (label aftercount-car))
       (assign tree (op car) (reg tree))
       (goto (label count-loop))
    aftercount-car
       (restore tree)
       (restore continue)
       (assign tree (op cdr) (reg tree))
       (goto (label count-loop))
    immediate-answer-null
       (goto (reg continue))
    immediate-answer-not-pair
       (assign n (op +) (reg n) (const 1))
       (goto (reg continue))
    count-done)))
  • 関数の返り値を全く使わないコードになった(結果はnの値)
  • 末尾再帰で関数から関数に値を渡すのに返り値を使うのは、変数の値を渡すための便法だということを感覚的に理解した
  • ちょっと目からウロコ気分

宇野常寛氏講演会(仮面ライダー勉強会)

ここからは自分自身の話

  • 平成ライダーはあらかた見てる
    • ただしクウガは半分くらいしか見てない(最終回は見た)
    • 逆にアギトは欠かさず見てたのに最終回だけ見逃していまだに見てない。たぶん見なくても問題ないラストだと思う
    • 最初の数話で自分には合わないなと思って何話か見なかったのが響鬼と電王。結局、数話飛ばしただけで最終回まで見たけど
    • 映画は半分くらいしか見てない
  • 実は初代ライダーもリアルタイムで何度か見たことがあったり。地方出身なんで、昭和ライダーの中には地元で放映されなかったのもあったけど
  • スペクトルマンライオン丸(初代。ライオン丸Gも見てたけど)もリアルタイムで見てたり
  • なんで自分がクウガ響鬼がピンと来なくて、物語として破綻してるアギトや555に惹かれたのか、宇野さんの話でよくわかった
  • 平成ライダーで一番好きなのは実はWなんだけど、宇野さんの評価はあまり高くないっぽい。自分は感覚が古いのかなー

第189回 素人くさいSICP読書会(at 三田某所)

  • 会場提供ありがとうございました
  • 4年超え
  • 問題5.21
  • 最初、vector-refとかを使おうとして悩む
  • 本文の「リスト構造用のメモリー演算は、計算機の基本演算として使用可能」という表記から、リスト関連のSchemeの関数はそのまま使えると判断
  • notとかもそのまま
  • a.は305ページのフィボナッチのコードをほぼそのままマネして書いた
  • b.は次週に持ち越し
  • 佐野さんがノキアのN900を持ってきてた

JavaScript好きな人がShibuya.js第2部を考える新年会

  • 楽しかったです。言い出しっぺのpiroさんありがとうございました
  • むかしむかし、secondlifeの人とか幹事2.0の人とかが「Shibuya.jsやろうぜ」とか盛り上がってた飲み会(たしかRails勉強会の2次会)に偶然居合わせて横目で見てたとか、最近、意外な場所でsecondlifeの人に会ったりとか(「あ、お久しぶりです」「あ、どうも」くらいの会話しかなかったけど)、妙にShibuya.jsには縁がある気がするので
  • 自分自身はJavaScriptあんまり知らないんだけど。お遊びでブックマークレット書くくらい
  • amachangに久しぶりに会った。お久しぶりでした
  • 案の定、濃い人ばっかり
  • 「やっぱり関数はファーストクラスでないとね」とか言ってるのを聞いてそれSc(ry
  • 最近はprototype.jsは使わないらしい。そういえば名前を聞くのはjQueryばっかりだよね
  • Javascript quizというのがあるらしい。こんなのわかりません><