<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Scheme / Drkcore</title><link>http://blog.kzfmix.com/Scheme</link><description>Programming, Music, Snowboarding</description><language>ja</language><lastBuildDate>Mon, 16 Jul 2012 09:15:18 +0919</lastBuildDate><item><title>素数夜曲: 女王陛下のLISPを注文した</title><link>http://blog.kzfmix.com/entry/1342397683</link><description>&lt;p&gt;800ページ超えってことは、&lt;a href="http://blog.kzfmix.com/tag/CTMCP"&gt;CTMCP&lt;/a&gt;並の分厚い本が届くということなのだろうか？&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4486019245/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/51qK5xMkoxL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;素数夜曲: 女王陛下のLISP&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    吉田 武&lt;br /&gt;
    東海大学出版会 / 3780円 ( 2012-06-26 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;数学学習の“全方位独学法”を提供する。数学の女王と讃えられる整数論を主題とし、その頂に登る為の様々な手法を紹介する。ラムダ計算と函数型言語を論じて整数論をLISPの方言であるSchemeにより表現し、豊富な図版と挿画で本質に迫る。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Schemeで整数論ってことは&lt;a href="http://projecteuler.net/"&gt;Project Euler&lt;/a&gt;への誘いとなっているのだろうかね。&lt;/p&gt;</description><pubDate>Mon, 16 Jul 2012 09:15:18 +0919</pubDate><category>Scheme</category></item><item><title>継続を渡す(scheme修行14章)</title><link>http://blog.kzfmix.com/entry/1321520654</link><description>&lt;p&gt;leftmostの実装&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;define &lt;/span&gt;&lt;span class="nv"&gt;atom?&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;and &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;not &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;pair? &lt;/span&gt;&lt;span class="nv"&gt;x&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;not &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;null? &lt;/span&gt;&lt;span class="nv"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)))))&lt;/span&gt;

&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;define &lt;/span&gt;&lt;span class="nv"&gt;leftmost&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;letrec&lt;/span&gt;
      &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nf"&gt;lm&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;l&lt;/span&gt; &lt;span class="nv"&gt;out&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
         &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;cond&lt;/span&gt;
          &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nb"&gt;null? &lt;/span&gt;&lt;span class="nv"&gt;l&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;quote &lt;/span&gt;&lt;span class="p"&gt;()))&lt;/span&gt;
          &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nf"&gt;atom?&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;car &lt;/span&gt;&lt;span class="nv"&gt;l&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
           &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;out&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;car &lt;/span&gt;&lt;span class="nv"&gt;l&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
          &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;else&lt;/span&gt;
           &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;let &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
         &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;lm&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;car &lt;/span&gt;&lt;span class="nv"&gt;l&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;out&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
         &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;lm&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;cdr &lt;/span&gt;&lt;span class="nv"&gt;l&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;out&lt;/span&gt;&lt;span class="p"&gt;)))))))&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;l&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;let/cc&lt;/span&gt; &lt;span class="nv"&gt;skip&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;lm&lt;/span&gt; &lt;span class="nv"&gt;l&lt;/span&gt; &lt;span class="nv"&gt;skip&lt;/span&gt;&lt;span class="p"&gt;)))))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;実行結果&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;gosh&amp;gt; &lt;span class="o"&gt;(&lt;/span&gt;leftmost &lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;((()&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;5 4&lt;span class="o"&gt;)&lt;/span&gt; 1&lt;span class="o"&gt;)&lt;/span&gt; 2 3&lt;span class="o"&gt;))&lt;/span&gt;
5
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;面白い部分は次の継続を関数に渡しているところと&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;let&lt;/span&gt;/cc skip &lt;span class="o"&gt;(&lt;/span&gt;lm l skip&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;let () で次々に関数を実行しているところ。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;let&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lm&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;car&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lm&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cdr&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;アトムが見つかればその時点でそれ以降の計算はキャンセルされるので次々に実行する処理を書いていい。&lt;/p&gt;
&lt;p&gt;ちょっと悟りが開けた。&lt;/p&gt;
&lt;p&gt;この本面白いなぁ、何度が読みなおすことになりそう。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274068536/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41tjoNz2EWL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Scheme修行&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Daniel P. Friedman and Matthias Felleisen&lt;br /&gt;
    オーム社 / 2940円 ( 2011-06-15 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;</description><pubDate>Thu, 17 Nov 2011 18:04:30 +0919</pubDate><category>Scheme</category></item><item><title>ホップ、スキップ、ジャンプ (schemeで継続)</title><link>http://blog.kzfmix.com/entry/1321141905</link><description>&lt;p&gt;scheme 修行では早々に継続(letcc)が出てくる。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;define &lt;/span&gt;&lt;span class="nv"&gt;rember-upto-last&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;let/cc&lt;/span&gt; &lt;span class="nv"&gt;skip&lt;/span&gt;
       &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;letrec&lt;/span&gt;
           &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nf"&gt;R&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
             &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;cond&lt;/span&gt;
              &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nb"&gt;null? &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;quote &lt;/span&gt;&lt;span class="p"&gt;()))&lt;/span&gt;
              &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nb"&gt;eq? &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;car &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
               &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;skip&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;R&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;cdr &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;))))&lt;/span&gt;
              &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;else &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;cons &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;car &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;R&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;cdr &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;))))))))&lt;/span&gt;
         &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;R&lt;/span&gt; &lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)))))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;これはリストの中の指定した要素以降のリストを返す（要素が見つからなければすべてのリストを返す）&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;gosh&amp;gt; &lt;span class="o"&gt;(&lt;/span&gt;rember-upto-last &lt;span class="s1"&gt;&amp;#39;three &amp;#39;&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;one two three four five&lt;span class="o"&gt;))&lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;four five&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;a href="http://practical-scheme.net/docs/cont-j.html"&gt;なんでも継続&lt;/a&gt;によれば継続とは&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「現在の計算を続行するための情報」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;とある。つまりこれが継続ということだが、Scheme修行では別の表現がされていた(p.43)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;letcc hopを通り過ぎたあと、(hop M)に遭遇する前にすべきだったことを忘れなさい。そしてMが何であっても
まるで (letcc hop M)の値を求めたかのようにふるまいなさい&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;上のコードでは、skip (R (cdr lat))を通るときに今まで計算してきた情報を捨てて、(R (cdr lat))を実行する。つまり現在の計算を続行するための情報 を伴ってRにジャンプしている。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274068536/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41tjoNz2EWL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Scheme修行&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Daniel P. Friedman and Matthias Felleisen&lt;br /&gt;
    オーム社 / 2940円 ( 2011-06-15 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;</description><pubDate>Sun, 13 Nov 2011 09:28:59 +0919</pubDate><category>Scheme</category></item><item><title>Scheme修行 11章</title><link>http://blog.kzfmix.com/entry/1313221258</link><description>&lt;p&gt;JGPによると&lt;strong&gt;javascriptはCの皮を被ったLispだから&lt;/strong&gt;LISPの作法にも慣れておくと良いと思うのです。というよりこのシリーズは面白いので読むといいと思います。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274068536/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41tjoNz2EWL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Scheme修行&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Daniel P. Friedman and Matthias Felleisen&lt;br /&gt;
    オーム社 / 2940円 ( 2011-06-15 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;two-in-a-rowっていうリストの中に同じ値が隣あっているかどうかを調べる関数を定義する。&lt;/p&gt;
&lt;p&gt;まずは相互再帰&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;define &lt;/span&gt;&lt;span class="nv"&gt;two-in-a-row?&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;cond&lt;/span&gt;
     &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nb"&gt;null? &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="no"&gt;#f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
     &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;else&lt;/span&gt;
      &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;is-first-b?&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;car &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;cdr &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;))))))&lt;/span&gt;

&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;define &lt;/span&gt;&lt;span class="nv"&gt;is-first-b?&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;cond&lt;/span&gt;
     &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nb"&gt;null? &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="no"&gt;#f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
     &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;else &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;or &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;eq? &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;car &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
           &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;two-in-a-row?&lt;/span&gt; &lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;))))))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;これを直接再帰に書き直す。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;define &lt;/span&gt;&lt;span class="nv"&gt;two-in-a-row-b?&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;preceeding&lt;/span&gt; &lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;cond &lt;/span&gt;
     &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nb"&gt;null? &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="no"&gt;#f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
     &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;else &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;or &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;eq? &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;car &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;preceeding&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
           &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;two-in-a-row-b?&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;car &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;cdr &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)))))))&lt;/span&gt;

&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;define &lt;/span&gt;&lt;span class="nv"&gt;two-in-a-row-2?&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;cond&lt;/span&gt;
     &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nb"&gt;null? &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="no"&gt;#f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
     &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;else &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;two-in-a-row-b?&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;car &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;cdr &lt;/span&gt;&lt;span class="nv"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;))))))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;hr /&gt;
&lt;p&gt;&lt;a href="https://spreadsheets.google.com/spreadsheet/viewform?formkey=dDhwRkNVejZDVmFQSHRlX3VHbS1sVmc6MA"&gt;8/20にJGPの読書会@静岡&lt;/a&gt;があります。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113911/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41H0Dk-K3PL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Douglas Crockford&lt;br /&gt;
    オライリージャパン / 1890円 ( 2008-12-22 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;</description><pubDate>Sat, 13 Aug 2011 16:46:15 +0919</pubDate><category>Scheme</category><category>javascript</category></item><item><title>Scheme修行</title><link>http://blog.kzfmix.com/entry/1307791233</link><description>&lt;p&gt;お、日本語訳でるのか！というわけで早速注文。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274068536/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41tjoNz2EWL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Scheme修行&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Daniel P. Friedman and Matthias Felleisen&lt;br /&gt;
    オーム社 / 2940円 ( 2011-06-15 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Schemeを学ぶための定番書を初翻訳！ プログラミング言語Scheme は、Lispの代表的な方言であり、計算機科学においてプログラミングを学ぶ上でもっとも適した言語のひとつでもあります。本書は、2010年10月発行『Scheme 手習い』（原題：“The Little Schemer, Fourth Edition”）の続編である“The Seasoned Schemer”を翻訳したものです。『Scheme 手習い』同様の対話形式で、状態やスコープ、継続といった、Schemeと計算機科学のさらなる話題を扱っています。 &lt;/p&gt;
&lt;/blockquote&gt;</description><pubDate>Sat, 11 Jun 2011 20:20:51 +0919</pubDate><category>Scheme</category></item><item><title>2010年に読んだ本</title><link>http://blog.kzfmix.com/entry/1293542750</link><description>&lt;p&gt;今年読んで良かった本をビジネス系と技術系で5つずつあげてみる。&lt;/p&gt;
&lt;p&gt;ビジネス本は読んだ量の割に心に残るものは少なかったけど内容がいい本は深くて色々考えさせられた。特に「イシューからはじめよ」はピカイチだった。&lt;/p&gt;
&lt;p&gt;技術書は前半は&lt;a href="http://blog.kzfmix.com/tag/PK-PD"&gt;PK-PD&lt;/a&gt;の本とか読んでいて、後半はプログラミング関係をそこそこ読んだ。Ruby関連の本が面白かったような気がする。エキスパートPythonプログラミングも大きい。&lt;/p&gt;
&lt;h3&gt;ビジネス本&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://blog.kzfmix.com/entry/1268085497"&gt;とんがり&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4153200115/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41uuWhm0XdL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;小さなチーム、大きな仕事―37シグナルズ成功の法則 (ハヤカワ新書juice)&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    ジェイソン・フリード&lt;br /&gt;
    早川書房 / ?円 ( 2010-02-25 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;ログをとるのは&lt;a href="http://blog.kzfmix.com/entry/1273920947"&gt;楽しい&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4153200107/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/417RwSrDozL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;ライフログのすすめ―人生の「すべて」をデジタルに記録する! (ハヤカワ新書juice)&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    ゴードン ベル&lt;br /&gt;
    早川書房 / 1470円 ( 2010-01 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;IT業界に限らず、変化が激しい業界では短期的な成果を出すことも、長期的な視野での成果（つまり自分の成長）も&lt;a href="http://blog.kzfmix.com/entry/1273491528"&gt;きちんと考えることが大切&lt;/a&gt;だと思う。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/477414259X/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/517nvXWbTaL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;IT業界を楽しく生き抜くための「つまみぐい勉強法」 (技評SE選書)&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    奥 乃美&lt;br /&gt;
    技術評論社 / 1764円 ( 2010-05-07 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.kzfmix.com/entry/1275395243"&gt;自分で自分を経営&lt;/a&gt;しているって感覚が当たり前になるんだろうなと思っている&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4478002258/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41MWD9DH5xL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;経営の教科書―社長が押さえておくべき30の基礎科目&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    新 将命&lt;br /&gt;
    ダイヤモンド社 / 1680円 ( 2009-12-11 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;昨日読み終わったので感想記事を書いてないが、すごく良かった。ピンと来る人にはグイグイ引き込まれる内容。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4862760856/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41iUErzQk8L._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;イシューからはじめよ―知的生産の「シンプルな本質」&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    安宅和人&lt;br /&gt;
    英治出版 / 1890円 ( 2010-11-24 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;h3&gt;技術書&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://blog.kzfmix.com/entry/1275307557"&gt;5章まで&lt;/a&gt;と&lt;a href="http://blog.kzfmix.com/entry/1275566335"&gt;残り&lt;/a&gt;。何度か読みなおしてPythonへの理解を深めていくための本&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4048686291/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/51wSTTIQtgL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;エキスパートPythonプログラミング&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Tarek Ziade&lt;br /&gt;
    アスキー・メディアワークス / 3780円 ( 2010-05-28 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;月曜日から金曜日に章が分かれていてメタプログラミングを&lt;a href="http://blog.kzfmix.com/tag/Ruby"&gt;学んでいく&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4048687158/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/51TODrMIEnL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;メタプログラミングRuby&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Paolo Perrotta&lt;br /&gt;
    アスキー・メディアワークス / 2940円 ( 2010-08-28 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;バリバリEmacsを使っているEmacs使いが、作業効率をカイゼンしてさらに&lt;a href="http://blog.kzfmix.com/entry/1281353413"&gt;バリバリ使うようになるための本&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774143278/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/517LicIhabL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Emacsテクニックバイブル　～作業効率をカイゼンする200の技～&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    るびきち&lt;br /&gt;
    技術評論社 / 2919円 ( 2010-08-03 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;継続やYコンビネータを知るために。独特の形式もまた&lt;a href="http://blog.kzfmix.com/entry/1288773747"&gt;読んでて楽しい&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274068269/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41OG665OkZL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Scheme手習い&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Daniel P. Friedman&lt;br /&gt;
    オーム社 / 2940円 ( 2010-10-22 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;創薬研究の問題解決の方法論としても&lt;a href="http://blog.kzfmix.com/entry/1287301256"&gt;参考になることは多い&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798121622/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/51XuuxjNAaL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Redmineによるタスクマネジメント実践技法&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    小川 明彦&lt;br /&gt;
    翔泳社 / 3444円 ( 2010-10-13 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;</description><pubDate>Wed, 29 Dec 2010 19:23:16 +0919</pubDate><category>work</category><category>life</category><category>Scheme</category><category>Ruby</category><category>Python</category><category>Emacs</category></item><item><title>「Scheme手習い」を読んだ</title><link>http://blog.kzfmix.com/entry/1288773747</link><description>&lt;p&gt;これは評判通りの良書。&lt;/p&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274068269/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/41EPUv3v0EL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;Scheme手習い&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
Daniel P. Friedman,Matthias Felleisen &lt;br /&gt;
オーム社 / ￥ 2,940 ()&lt;br /&gt;
在庫あり。&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;最初のほうはさらさら読めて、僕は7章からが面白かった。&lt;/p&gt;

&lt;p&gt;7章では関数とは何か？ということが集合から説明されていく。有限関数の表現の仕方とか一対一対応とか。&lt;/p&gt;

&lt;p&gt;8章はlamdaから始まって継続の話でこれは面白いがさらっと流れる。継続とは何かということは良く考えないと出てこないかも&lt;/p&gt;

&lt;p&gt;9章は&lt;a href="http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E3%81%AE%E5%95%8F%E9%A1%8C"&gt;コラッツの問題&lt;/a&gt;,&lt;a href="http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%83%E3%82%AB%E3%83%BC%E3%83%9E%E3%83%B3%E9%96%A2%E6%95%B0"&gt;アッカーマン関数&lt;/a&gt;が出てきて最後に&lt;a href="http://en.wikipedia.org/wiki/Y_combinator"&gt;Y-combinator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;pythonで書いてみた( fact(5) )。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;(lambda g: (lambda f: g(lambda arg: f(f)(arg))) 
(lambda f: g(lambda arg: f(f)(arg))))
(lambda f: lambda n: (1 if n&amp;lt;2 else n*f(n-1)))(5)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;10章はSchemeを実装する話で、Javaなんかで実装したことがあるが、こっちのほうが環境の動きというものがよくわかった。&lt;/p&gt;

&lt;p&gt;8,9,10は色々分かっている人向けかな。でもちょっとは知っていればかなり理解が進むし、深まり度も高まってオススメかも。&lt;/p&gt;
</description><pubDate>Wed, 03 Nov 2010 17:43:30 +0919</pubDate><category>Scheme</category><category>Python</category></item><item><title>Scheme手習い</title><link>http://blog.kzfmix.com/entry/1286368285</link><description>&lt;p&gt;悩む&lt;/p&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274068269/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/41CcJBi12gL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;Scheme手習い&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
Daniel P. Friedman,Matthias Felleisen &lt;br /&gt;
オーム社 / ￥ 2,940 ()&lt;br /&gt;
近日発売　予約可&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;ほしい物リストスタックが積まれてないし、買ってもよいかなと思っている。&lt;/p&gt;
</description><pubDate>Wed, 06 Oct 2010 21:31:48 +0919</pubDate><category>Scheme</category></item><item><title>pythonのスコープではまる</title><link>http://blog.kzfmix.com/entry/1195128601</link><description>&lt;p&gt;ちょっとはまった。結局オブジェクト作って解決しといたけど気持ち悪いので少し調べた。（でも未解決）&lt;/p&gt;

&lt;p&gt;クロージャでカウンタを考える。&lt;a href="http://oss.timedia.co.jp/show/ossz/oneline/2005-05-23"&gt;Open Source WEB&lt;/a&gt;を参考に&lt;/p&gt;

&lt;p&gt;perlだと&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sub make_counter {
  my $c = $_[0] || 0;
  return sub { $c++ }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;gaucheだとこんな感じ&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;(define (make-counter n)
  (let1 c n
    (lambda () (inc! c))))
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;でもpythonだとだめなの&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;def make_counter(n):
    c = n
    def counter():
        c = c + 1
        return c
    return counter
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;スコープの洗礼をうけた。参照できても代入できないのでglobalにする必要が。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;def make_counter(n):
    c = n
    def counter():
        global c
        c += 1
        return c
    return counter

ctr = make_counter(5)
ctr()
ctr()

Traceback (most recent call last):
  File "C:\home\kzfm\test.py", line 10, in &amp;lt;module&amp;gt;
    ctr()
  File "C:\home\kzfm\test.py", line 5, in counter
    c += 1
NameError: global name 'c' is not defined
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;とかいってglobalでも駄目だ。&lt;/p&gt;
</description><pubDate>Tue, 12 Jan 2010 11:05:18 +0919</pubDate><category>perl</category><category>Scheme</category><category>Python</category></item><item><title>SICP5章　schemeでレジスタ計算機を模倣する</title><link>http://blog.kzfmix.com/entry/1238590245</link><description>&lt;p&gt;ずっと5章に興味が持てなくてほったらかしにしていたのだけど、読み始めた。5章は毛色が違うように感じてたのと、単に関数型言語が知りたいだけだったら3章までで満足できて、&lt;a href="http://blog.kzfmix.com/entry/1188481478"&gt;計算機の話って何が面白いんだろうか？&lt;/a&gt;なんて思ってたのだけど、（僕の場合）以下のような道のりを経て5章にたどり着いた。&lt;/p&gt;

&lt;h4&gt;EsoteicでVMとかエミュレータみたいなもんに興味がわいた。あと中間言語&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://blog.kzfmix.com/entry/1230642262"&gt;Bolic&lt;/a&gt;とか。そういえば&lt;a href="http://blog.kzfmix.com/entry/1230452181"&gt;ゲノム言語&lt;/a&gt;とかつくったみたな。&lt;/p&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839927847/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/41vb2HHFNJL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
原 悠 &lt;br /&gt;
毎日コミュニケーションズ / ￥ 2,814 ()&lt;br /&gt;
&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;h4&gt;プログラミングの力を生み出す本&lt;/h4&gt;

&lt;p&gt;Cのプログラムをアセンブリから眺めてみる。レジスタとかメモリとか意識できるようになった。&lt;/p&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274132072/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/412BKEJ1A6L._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;プログラミングの力を生み出す本―インテルCPUのGNUユーザへ&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
橋本 洋志,松永 俊雄,冨永 和人,石井 千春 &lt;br /&gt;
オーム社 / ￥ 2,625 ()&lt;br /&gt;
&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;h4&gt;CPUの創りかた&lt;/h4&gt;

&lt;p&gt;4bitCPUつくる。半加算器とか全加算器が論理回路でつくれるとかそういう話は楽しい。&lt;/p&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839909865/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/51ATDABNHEL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;CPUの創りかた&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
渡波 郁 &lt;br /&gt;
毎日コミュニケーションズ / ￥ 2,940 ()&lt;br /&gt;
在庫あり。&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;h4&gt;SICP5章&lt;/h4&gt;

&lt;p&gt;という長い道のりを経て、やっとSICP5章。&lt;/p&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/489471163X/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/51ZSMEJ9Y2L._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;計算機プログラムの構造と解釈&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
ジェラルド・ジェイ サスマン,ジュリー サスマン,ハロルド エイブルソン &lt;br /&gt;
ピアソンエデュケーション / ￥ 4,830 ()&lt;br /&gt;
在庫あり。&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;数日かけてバグとって、実際に&lt;a href="http://wiki.kzfmix.com/?SICP"&gt;GCDマシン&lt;/a&gt;が動いた時にはかなり感動。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;gosh&amp;gt; (set-register-contents! gcd-machine 'a 206)
done
gosh&amp;gt; (set-register-contents! gcd-machine 'b 40)
done
gosh&amp;gt; (start gcd-machine)
done
gosh&amp;gt; (get-register-contents gcd-machine 'a)
2
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;デバッグしながら中身の動きが理解できた。&lt;/p&gt;
</description><pubDate>Thu, 02 Apr 2009 06:22:26 +0919</pubDate><category>SICP</category><category>Scheme</category></item></channel></rss>