トップ «前の日記(2006-05-29) 最新 次の日記(2006-06-10)» 編集

活動日誌


2006-06-07

[Ruby]驚き最少の原則

http://www.rubyist.net/~matz/20060601.html#p02

「驚き最少の原則」という言葉は、まつもとさんが言い出したものでもなく、 またまつもとさんはもう既に使っていない言葉だとは知らなかった。 確かに、Matzにっきを「驚き最少」で検索してみても、このエントリしか出てこない。

「驚き最少の原則」と聞いてまず頭に浮かぶのは、 C++ と LISP と Ruby のストレス度合いのグラフが出てくるスライド。

今調べてみたところ、2002 年のスライドでは「『脳力』消費」のグラフとして出てきていた。 http://www.rubyist.net/~matz/slides/of-kansai2002/index.html

で、このスライドで「驚き最少の原則」も出てくる。 http://www.rubyist.net/~matz/slides/of-kansai2002/mgp00036.html

このスライドによって、自分の中では「驚き最少の原則」とこのグラフが結びついた形で 記憶されていた。 (このエントリを書くまで、グラフの縦軸は「驚き度」だと思い込んでいた)

その後、まつもとさんが「驚き最少の原則」を使わなくなったあとも、このグラフはスライドに出てくる。 例えば 2005 年のスライド。 http://www.rubyist.net/~matz/slides/tsukuba-seminar1/

よって、自分の中では「Ruby = 驚き最少」という認識を持ち続けていたのであった。

まつもとさん曰く、ruby-talk などでは打ち消していたとのことだったが、 ruby-talk は読んでいないので知らなかった。

[Ruby]assert_sorted

Ruby の Array/Enumerable にも Test::Unit にも Rails にも、 配列が整列済みであるかどうかを調べるメソッド/アサーションはないようです。

標準であってよさそうな気はするのですが……

module Test::Unit::Assertions
  def assert_sorted(object, message=nil)
    first = true
    prev = nil
    sorted = true
    object.each do |e|
      if first
        first = false
      else
        if (block_given? ? !yield(prev, e) : (prev <=> e) != -1)
          sorted = false
          break
        end
      end
      prev = e
    end

    full_message = build_message(message, "<?> is not sorted.", object)
    assert_block(full_message){ sorted }
  end
end

書いてみましたが、もうちょっとうまい書き方がありそうな気はします。


2005|02|03|04|05|06|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|03|04|05|06|10|
2008|04|10|
2009|10|
2010|05|08|
2012|01|02|03|
2014|01|
2022|05|
トップ «前の日記(2006-05-29) 最新 次の日記(2006-06-10)»