「48時間でSchemeを書こう/評価: 第一部」の版間の差分

削除された内容 追加された内容
関数 reads の戻り値の説明を「元の値」から「残りの文字列」に修正。
172 行
R5RS Schemeと同様、2引数だけに囚われないことにします。私たちの定義する数値操作はどんな長さのリストにも働くことができます。よって<code>(+ 2 3 4)</code> = 2 + 3 + 4で、<code>(- 1 5 5 3 2)</code> = 15 - 5 - 3 - 2です。ビルトイン関数[http://www.haskell.org/onlinereport/standard-prelude.html#$vfoldl1 foldl1]を使ってこうします。<code>foldl1</code>は、本質的には、リスト中の全てのコンス演算子を二項演算子<code>op</code>に置きかえます。
 
R5RS Schemeとは違って、私たちは''弱い型付け''の一種を実装しています。それは、もし値が数値として解釈できる(文字列"2"のように)ならば、それが文字列であっても数値として扱うということを意味します。これは<code>unpackNum</code>に幾つか余分の節を付けることで実現します。もし私たちが文字列をunpackしているならば、Haskellのビルトイン関数[http://www.haskell.org/onlinereport/standard-prelude.html#$vreads reads]でパースできるか試してみます。<code>reads</code>は(パースされた結果の値、残り文字列)というペアのリストを返します。
 
リストに対しては、一つの値のみを持つリストに対してパターンマッチを行い、それをunpackすることを試みます。他は全て次の場合に流れつきます。