稲葉です.

ruby-list:12065
From: WATANABE Hirofumi <eban / os.rim.or.jp>
Date: Sat, 13 Feb 1999 23:34:04 +0900

> YANAGAWA Kazuhisa <kjana / os.xaxon.ne.jp>  writes:
> 
> :>  十分スマートかどうかわかりませんが, arr[1, arr.size-1] はどうでしょう?
> :
> :OK です.そうか,それでよかったんだ.... なんでもやってみないとだめです
> :ね.特にこういうすぐに試せるものでは.

> arr = [1] のときに arr[1..-1] はエラーで arr[1, arr.size-1] 
> はいいってのはやっぱまずい気がしますね.

自分はこっちはそんなにまずくないと思うのですが.  arr == [1] の時でも 
arr[1, 0]はarrの第0要素の次から0個の要素を取りだしたものと解釈すれば問
題ないと思います. arr[2, 0] や arr[1, 1] がどうであるべきかは自分も
まよいますが.

自分の好みで「ちょっと変」と思うのは,

> :「cdr(arr) を意図しています」ということで [] に対して適用したら [] が
> :返ってきて欲しいわけです.ますます OK です.

arr[start..end]でstart > endの時に例外を出すようになったのなら,
arr[0,-1]が例外になってもいいと思います. というかそうなったと思って
rubyが例外を出すのを予期したら, そうなってなかった, という事なんですが.

> 逆に car と cdr を Array に追加するとか :-)

Schemeだと(car '())や(cdr '())はエラーになりますよね.

MLの検索をしてみたら, まつもとさんが

Subject: [ruby-list:10507] Re: negative index of an array
From: matz / netlab.co.jp (Yukihiro Matsumoto)
Date: Fri, 30 Oct 1998 17:37:32 +0900

にて「arr[4, -2] = ['a', 'b']」のような代入の際に, 「負の長さはいつも
例外にするようにしましょう」と書かれています. 今の話題は参照ですけど.

# 柳川さんにとっては好ましくない方向への提案ですね. すみません.
--
	稲葉 浩人 <inaba / sdd.tokyo-sc.toshiba.co.jp/inaba / st.rim.or.jp>