いいんどうしでだいバトルだ!

Ada Issues(言語仕様の改定案)の議論は、それで興行できるのじゃないかしらん。
AI05-0011-1が空っぽになっているからどうしたのかと思えば、舞台を移しAI05-0074をふたつに割っての論争中です。もっとも、進行は遅々としてますが……なにしろAda2015がターゲットですし。

http://www.ada-auth.org/cgi-bin/cvsweb.cgi/AI05s/AI05-0074-1.TXT
http://www.ada-auth.org/cgi-bin/cvsweb.cgi/AI05s/AI05-0074-2.TXT

何を論争しているのかといいますと、genericとpackageにまつわる幾つかの問題をまとめて解決する新機能案のうち、あれがいいこれがいいやってるわけです。Adaは改定の際は整合性を互換性よりも優先してよい、ターゲットを考えたら恐ろしくて仕方が無い決まりまでありますので、俄然熱が入ります。

てきとうに書くとこんな感じ。

  • Adaはgenericが名前空間ですのでclass t{ vector m; };が書けない。
    • インスタンス化を子packageに追い出してlimited withすればいけるよ派。
      • 元がgenericだった場合、外で定義した子packageもgenericになってしまうのでダメ。
        • generic packageが非genericな子を持てるようにしよう派。
          • コンパイラの実装どーすんだよ派。
          • 使う側もwithめんどくさいよ派。
            • GNATのText_IOの子パッケージは別ファイルなのに自動でwithされるぞ派。
              • at end with ... 派。
              • package ... end with ... 派。
      • 子packageを中に置く場合、子packageのprivate部が親のprivate部を見えないため、インスタンス化ができない。
          • privateの後も公開する定義を書ければいいんじゃね?派。
            • not private派。
            • end private派。
          • generic packageに渡す引数を後から宣言できるようにしよう派。
            • package ... is limited new ...派。
            • package ... is new ... with private派。
    • そもそもgrowableな配列があればいいんだよ派。

もっとあるかも。

優勢そうなのはlimited new派とend private派です。
ちなみに私はwith private派を(心の中だけですが)応援しています。この構文ですと、提案はされてませんが、generic以外の単なる子packageでも、privateを親のprivateに固められるようにできそうですので、一番外のprivateより上は全部見えてprivateより下は全部見えないようにできます。
現在

package p is
  package c is
  private
    -- ここが嫌な感じ
  end c;
private
end p;

妄想

package p is
  package c is
  end c with private;
private
  package private c is
    -- ほっと一息
  end c;
end p;

折角privateより上だけ見ればいいことになっていますのに、not privateやend privateはセンス無いと思います。