プログラミング言語 Scala at TECH
[2ch|▼Menu]
593:デフォルトの名無しさん
08/12/12 08:35:32
>>569 です。582 さん、詳細に答えて下さり感謝します。

「Java の generics では、下のように extends を使う。デフォルトでは Object を継承
する」との説明を読んで、これは制限が強すぎると感じました。List, Vector, Map など
の素直なコレクション・ライブラリを記述するには型チェックが有効に働くでしょう。で
も使いもしないメソッドにまで型チェックが利いてしまうのでは、generic なライブラリ
を作るほうが大変だろうと推測していました。

  public static <T extends Comparable<T>> boolean greater(T t1, T t2) {
    return t1.compareTo(t2) > 0;
  }

だからこそ、List(Any) と書けるようにしたのだと思います。


反変/共変は理解できていませんが、皆様の議論を見ていると scala では型チェックを
重視・活用しているように思えます。OCaml でのようにコンパイル段階でエラーを検出・
指摘することに拘っているのだろうと推測します。

Python duck typing のように、実行時にエラーを吐き出していたのでは、ビジネス用途
で使い物にならないのだと思います。C++ template でのように、大量の意味を掴みにく
いエラーメッセージを吐き出すことは、scala ではないのだと思います。

もうすこし調べてみます。ありがとうございました。



次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5019日前に更新/158 KB
担当:undef