それLispなら
Lispだったら、nilは()だからeach的なこと(mapとか)するときにいちいちチェックしなくてもいいんですよ、とか言ってみたり。Lispのことは聞いてねーよってやつですね、すいません。
while(!@err) r,w,e = select(@socks) next if r.nil? r.each { |sock| case sock ... } }これは、selectから返されたrがnilだった場合に、それに続くr.eachでエラーにならないようにするための処理だが(注:実際にはタイムアウトのパラメターを与えていないのでnilが返るはずはないのだが、とりあえずそれは無視していただきたい)、この一行がどうにも読みにくくしている。
Lispのnilが偽で、nil以外は真で、しかもnilは()である、っていう世界は最近とても合理的なように感じる。この点においては、Schemeの#fよりも好き。nilを()と考えた奴(マッカーシー先生?)は天才だとおも。