2009-03-02から1日間の記事一覧

and-let*

8章4節、and-let*に関して。 条件式が#fじゃなければその値を使って計算して、その結果で真偽を判定して、#fならば処理を止め、#f以外ならばさらにその値を使って計算して...、みたいな場合、つまり int val1=0,val2=0,val3=0; if ((0 != (val1 = SomeFunc1(…

whenとunless

8章4節のwhenとunlessに関して。 when 与えた式が真となるとき(つまり#fにならないとき)に限り処理をする場合に使う。 (when <条件式> 複数のS式) を評価した後、それが#f以外になれば以降に続く「複数のS式」を順に評価して、最後のS式の値をwhen全体の値…

andとor

8章4節のandとorに関して。 and 複数の引数を取り、先頭から評価していって、#fを見つけたら直ちに評価を中止し#fを返す。 引数が全て#f以外の値だったら、最後に評価した値を返す。 gosh> (and 1 2 3 #f 4 5) #f gosh> (and 1 2 3 4 5) 5 簡単。 or 複数の…

case

8章4節のcaseに関して。 C言語とかでのswitch-case文みたいなことができるのね。 (case <key式> (リスト1 複数のS式) (リスト2 複数のS式) ... (リストn 複数のS式) (else 複数のS式) まずを評価する。 んで、リスト1、リスト2、...、リストnの順に要素にと同じもの</key式>…

すべて式である

106ページからのコラム「すべて式である」。 今までSchemeをやってきて、このコラムが言いたいことは大体理解できた。 だけど、評価結果が未定義の場合はどうするのだろう。 Schemeでの未定義な値は、Gaucheでは#らしいけど、この値を使って何かを計算するの…