「Lispのわかりやすさ」from Matz日記
http://www.rubyist.net/~matz/?date=20030909#p01
この話題に関連していいフレーズを思いついたんですが、 微妙に話がずれてるのでここに書いておきます。
それゆえ、Lisp は強力で、簡潔に書ける。 しかし、読みやすいとは限らない。 のではないかと思うのです。
tmpdir.rb と tempfile.rb の「e」の違いが気になって気になってしかたがない。
こういう感じの働きをする Enumerable#max_by, min_by が欲しくなった。
module Enumerable def max_by max {|a,b| yield(a) <=> yield(b) } end def min_by min {|a,b| yield(a) <=> yield(b) } end end
ちなみに Haskell には Data.List.maximumBy, minimumBy があるが、 これは Ruby のブロック付き max/min と同じような領域をカバーする。
~ % href maximumBy Data.List,maximumBy maximumBy :: (a -> a -> Ordering) -> [a] -> a maximumBy f xs リスト xs の要素の中で最大のものを返す。 大小の比較に f を使う。 see also: maximum, minimumBy, compare maximumBy (compare) [1,2,3,4] = maximum [1,2,3,4] = 4
もうパソコンなんてどうでもよくなってきた最近ですが、 G5 2GHz dual はちょっと欲しくなりました。なんかイイよアレ。 いま 50 万あったら AlphaServer ES40 とどっちを買うかかなり悩むな。
そう、ES40 が 25 万で売ってるんですよ。 ES40……Alpha 21264 500MHz × 4、メモリ 2GB に冗長電源三つ、 匡体の大きさは巨大冷蔵庫並。強いて欠点を挙げるならば、 電気代が正視できない額になるであろうことと、 Compaq 時代のマシンなので [d|i|g|i|t|a|l] ロゴが付いてないことか。
ところで「ましーん」という響きで Love Machine を思い出した。 懐かしすぎる。
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.
collect{|x|[yield(x), x]}.max[1]
ならyieldが半分で済むかも。
それだと empty? のときに落ちるですよ。
かと言って to_a 付け始めたりすると美しくないし。