こんにちは、私はSOを初めて使用するので、よろしくお願いします。
Simply Schemeの演習6.1には次の式があります。
(cond (empty? 3)
(square 7)
(else 9))
私の心は、(square 7) を評価してそれを返す必要があると言っています。(empty? 3) が代わりに評価されます (アトムを返しました — 他のアトムとリストで試してみましたが、同じことです)。
よくわかりません。
私が知っていること:
- false でない Scheme のすべてが true です。3 が真で空でない場合 (#f)、cond 式が (空? 3) を返すのはなぜですか?
- cond 式の最初の引数が評価され、それが true の場合は #t を返します。これは、コンテキストに応じて定義済みまたは未定義の値です。false の場合、cond 引数の評価が完了するまで (または適切な戻り値が見つからないまで)、cond を終了します。
私が知らないこと:
- (空? 3) 単独で #f を返します。cond がここで終了し、評価されないのはなぜですか (正方形 7)?
- cond 内で (empty? 3) を評価すると、#t や #f ではなくアトムが返されるのはなぜですか?
Slib で SCM を使用しており、Simply Scheme で提供される追加のライブラリ (simply.scm、functions.scm、ttt.scm、match.scm、database.scm) が読み込まれています。
空の?Simply.scm での定義は、現時点では私のスキームの理解を超えています。