読者です 読者をやめる 読者になる 読者になる

パソコンには霊圧も気もチャクラも無い

C# で書かれたこういうソースコードがあります:

var hoge = 42;

{
    var x = 0;

    if ( hoge >= 42 ) {
        x = 42;
    } else {
        x = hoge;
    }

    Console.WriteLine( x );
}

hoge42 以上なら x42 を設定し、それ以外なら hoge の値を x に設定するというよくあるコードです。
私としてはこのためだけに if を大仰に書かなければいけないというのがなんとも歯がゆく思えます。
分かる人であれば:

var x = hoge >= 42 ? 42 : hoge;

という風に書けばいいじゃんと言うでしょう。
とても良い方法ですが、条件が多くなってしまった時はどうしましょう?

単に三項演算子キモいというだけなんですが、こういう風に書ければいいと思っています:

var hoge = 42;

{
    var x = if ( hoge >= 42 ) {
        42
    } else {
        hoge
    };

    Console.WriteLine( x );
}

さて、Lisp ではどういう風に書くでしょうか?
私ならこのように書きます:

(define hoge 42)

(let ((x (if (>= hoge 42)
             42
             hoge)))
  (display x)
  (newline))