範囲演算子

範囲式は範囲演算子にします。
a .. b という範囲演算子は、a.op_range#(b.class)(b, kind) というメソッド呼び出しと等しくなります。
Intに対し引数の型Intで範囲演算子を実行すると、IntRangeクラスのインスタンスが返ります。

右の端点を含まない範囲演算子 ...という書式は無くし、..< だけにすることにしました。そして、左の端点を含む、含まないも表せる書式を追加することにしました。
範囲演算子は、次の四つとなります。

  • a .. b --- 閉区間 [a, b] = {x | a ≤ x ≤ b}
  • a ..< b --- 左閉右開区間 [a, b) = {x | a ≤ x < b}
  • a <..b --- 左開右閉区間 (a, b] = {x | a < x ≤ b}
  • a <..< b --- 開区間 (a, b) = {x | a < x < b}


[a .. b) という記述で端点を含む含まないを表そうかと考えたこともありました。しかしエディタ等がXtalのソース対応する際、括弧のバランスをとるのにそこそこ厳密なパースを要求してしまうことになるので止めときました。