まさと@広島市立大です.

遅いですが,あけましておめでとうございます.
今年は多少なりともRubyに貢献できればと思っております.

devのほうで,Complexのことが話されていたので
便乗して,ちょっとわからないことをお聞きします.

1.im --> Complex(0, 1)

というのはわかるのですが,

1.im.im --> Complex(0, Complex(0, 1))

これはありなんでしょうか?
虚数部が複素数,なんていう複素数はあるのでしょうか?
それとも,こんなことやっちゃダメなんでしょうか?

あと,Complexクラスの説明をRDで書きました.
僕はあまりプログラムが得意ではないので
ドキュメントの方で貢献できればと思っています.
では

=begin

==Complex

複素数のクラス.

===Usage

  require 'complex'

  Complex(x, y) --> x + yi
  y.im          --> 0 + yi

==スーパークラス

Numeric

==メソッド
===Complex(re[,im])

実数部をre,虚数部をimとした複素数を返します.

===arg

偏角を返します.

===polar

極座標を返します.

===conjugate

共役複素数を返します.

==im

レシーバを虚数部とした複素数を返します.

===real

実数部を返します.

===image

虚数部を返します.

===to_i

実数部と虚数部を整数にしたものを返します.

===to_f

実数部と虚数部を浮動小数点にしたものを返します.

===to_r

実数部と虚数部を有理数にしたものを返します.
require "ratinal"
としてないと使えません.

===to_s

文字列の表現を返します.
Complex(x, y).to_s --> "x + yi"

=end