なかだです。

At Thu, 23 May 2002 16:40:54 +0900,
Yukihiro Matsumoto wrote:
> |Yukihiro Matsumotoさんの
> |<1022138041.552884.4151.nullmailer / picachu.netlab.jp>から
> |> shiftのように「いくつずらす」という指定もありえますよね。そ
> |> の場合はrrotate,lrotateになるのかもしれませんが。いや、逆方
> |> 向は負にすればよいからやっぱり一つのメソッドで十分か。
> |
> |引数を回転量にするのなら、
> |正がどちら向きの回転か私には覚えられないので、
> |rrotate,lrotateがいいです。
> 
> アラビア語ではBiDiによって右と左が逆になるとか...

たぶん[]はアラビア語でも変わらないと思うんですが…。ただ本当に
左右なのかなとか思って、あえて左右という言葉は避けたんですが。

> あと、ちゃんと定義した方が良いのは、以下の場合ですね。
> 
>   * rotate!で配列サイズが1以下の場合
> 
>     sort!やreverse!は元の配列を返している。rotate!は? (中田
>     パッチはnilを返している)

reverse!はnilを返してます。というかそれに合わせたので。あと回転
量が0の場合もありますね。

>   * indexが大きかった場合、小さすぎた場合
> 
>     回転量と考えればlenでmoduloを取るべきだが、indexを先頭に
>     すると考えるとmoduloを取るのは変かも(中田パッチはエラー
>     にしてる)。

moduloにするというのは考えてませんでした。除数が正の場合は被除
数が負でもmoduloは定義済みでしたっけ。

At Thu, 23 May 2002 16:47:39 +0900,
nagai / ai.kyutech.ac.jp wrote:
> 回転量とするなら,
> 
>   [1,2,3,4].rotate(4) #=> [1,2,3,4] 
> 
> となるべきでしょうし,index なら
> 
>   [1,2,3,4].rotate(4) #=> 例外発生
> 
> となるべきでしょう.
> 導入目的にあってるのはどちら?

最初思い付いたのがリングバッファを整形するためなので、たぶん範
囲外の場合というのが念頭になくて、無意識に例外を選んだんだと思
います。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦