「48時間でSchemeを書こう」の版間の差分
削除された内容 追加された内容
→戻り値: 訳出 |
M →空白文字 |
||
248 行
</syntaxhighlight>
第二章で<code>>></code>("bind")演算子について軽く触れた時には、それは裏でdoブロックの行を繋ぎあわせるのに使われていると言いました。ここでは、スペースパーサと記号パーサを組み合わせるために明示的に使用しています。しかしながら、bindはParserモナドとIOモナドで全く異った意味を持ちます。Parserモナドでは、bindは「一つ目のパーサのマッチを試み、二つ目のパーサを残りの入力に対してマッチを試み、どちらかがマッチに失敗したら失敗する」という意味です。一般的には、bindは異るモナド間で非常に違った動きをします。モナドの目的は計算を構成する一般的な方法を提供することなので、それはいろんな違う種類の計算に適合できる
このコードをコンパイル・実行してください。<code>spaces</code>を<code>skipMany1</code>で定義したので、もう普通の単なる一文字は認識しないことに注意してください。その代わり、記号の前にスペースを入れ''なければなりません''。これがどのように都合よいのかみてみます。
|