タグ

ブックマーク / kmizu.hatenablog.com (6)

  • JavaとScalaとC#のジェネリクス機能比較表 - Onion開発しつつ、PEGEXを開発する日記

    JavaScalaとC#のジェネリクスは、いずれも継承を持ったオブジェクト指向言語においてParametric Polymorphismを実現するための手段であり、それぞれ異なった特性を持っている。というわけで、それぞれの言語においてジェネリクスがどのようにサポートされているかを比較した表を用意してみた。後で気が向いたら、各項目の説明を追加するかも。 Java(5.0以降) Scala C#(4.0) ジェネリックなクラス ○ ○ ○ ジェネリックなメソッド ○ ○ ○ 型パラメータの上限 ○ ○ ○ 型パラメータの下限 × ○ × 型パラメータの推論 ○ ○ ○ 全ての型のサブタイプ(ScalaにおけるNothing) × ○ × definition-site variance × ○ ○ use-site variance ○(Wildcard) ○(Existential Typ

    JavaとScalaとC#のジェネリクス機能比較表 - Onion開発しつつ、PEGEXを開発する日記
  • ろーざんぬ! - kmizuの日記

    4月13〜23日にかけて、Scala Daysというワークショップに参加するために、スイスのローザンヌという所まで行ってきました。帰って来てからもう数日経つので今更なのですが、k.inabaさんもローザンヌでの事を書かれたようだし、自分も一応書いておかなければなあということで書きます。 Scala Daysというのは名前の通りプログラミング言語Scalaに関するイベントで、基的にScalaに関することならおおむねなんでもありという感じのイベントでした。今回、私は自作のPEGベースパターンマッチングライブラリPEGEXについて発表したのですが、初めてのまともな英語発表ということもあってなかなか苦戦しましたが、聴衆にはそこそこ好評だったようです(発表資料:pegex.ppt, pegex.pdf)。ちなみに、発表者特典でScalaのマグカップをいただいたりもしました。 他の発表では、Leak

    ろーざんぬ! - kmizuの日記
    yuroyoro
    yuroyoro 2010/04/27
    お疲れ様でした!
  • Scala変態技法最速マスター - kmizuの日記

    Java変態文法最速マスターなんてのがかなりブクマされてるみたいだが、変態さならJavaなんてScalaの足元にも及ばないぜ!!ということで、Scala版を書いてみました。しかし、実はあまり変態ではないかもしれません。元ネタと違って、これを読めば何かがわかる、という意味の実用性はあまり無いでしょう。 implicit conversion編 基 Scalaのimplicit conversionは使いようによってはScalaの強力な型システムを台無しにしてしまう力を持っています。たとえば、 implicit def string2int(x: String): Int = Integer.parseInt(x) というimplicit conversionを定義してやると、"300" / 3が100になるなどというキモい挙動を実現することができます。また、さらにカスタマイズして、16進数

    Scala変態技法最速マスター - kmizuの日記
    yuroyoro
    yuroyoro 2010/02/04
    type aliasなんかふつーに有用ですよね。まぁ変態ですが。
  • Extractorを使った正規表現ライブラリの簡易ラッパー - kmizuの日記

    Scalaの正規表現ライブラリは、Javaの正規表現ライブラリのラッパーになっていて、Javaのものよりもだいぶ使いやすくはなっているが、パターンマッチに使う時は、以下のように必ずvalなどでいったん変数に代入しなければならないという欠点がある。 scala> val numPat = """[0-9]+""".r numPat: scala.util.matching.Regex = [0-9]+ scala> "123" match { case numPat() => println("matched") } matchedそこで、簡単な場合には、パターンにいちいち名前を付けずに済むようなライブラリをExtractorを使って書いてみた。これを使うと、たとえば上のコードは次のように書ける: scala> ("123", """[0-9]+""") match { case Succe

    Extractorを使った正規表現ライブラリの簡易ラッパー - kmizuの日記
  • Re: 勉強帳 (1) - kmizuの日記

    まめめもより。 Scala を勉強してみます。売り文句だけ見てみると 1. 手続き型でも関数型でも書ける 2. 純粋なオブジェクト指向 3. 柔軟な文法で DSL しやすい 4. パターンマッチ 5. 静的型付け (ジェネリクスあり) 6. JVM で動く (Java の資産を活用できる) 以下はチュートリアルやマニュアルを読んで得たいい加減な理解や疑問点を晒すものです。間違ってるところは教えてください。 http://d.hatena.ne.jp/ku-ma-me/20090512/p1 Scalaを初めて調べて見た人の多くが疑問に思う点が網羅されていたので、せっかくなので、ツッコミのネタにさせていただきます。 class 以外に object という構文があるらしくて、特異メソッドつきのオブジェクトみたいなものを定義しているっぽい。それが Java の static メソッドに相当する

    Re: 勉強帳 (1) - kmizuの日記
    yuroyoro
    yuroyoro 2009/05/14
    companion object,companion classって知らんかった。。。
  • Java 7のクロージャ(BGGA版)のプロトタイプを試してみた - kmizuの日記

    Java API、使ってますか? (53) Java SE 7の要注目機能"クロージャ"はどうなるのか の記事を参考に、ここからプロトタイプ実装をダウンロードしてきてインストールしてみた。 注意点として、上記の紹介記事ではJDK 5.0以降が必要という風に書かれているが、JDK 5.0だと次のようにUnsupportedClassVersionErrorが出てコンパイラが実行できなかった(JDK 6.0だと動作することは確認)。 Error occurred during initialization of VM java/lang/UnsupportedClassVersionError: Bad version number in .class fileさて、早速、まずは上記リンク先の紹介記事に書かれているコードをコンパイルしてみた。 >bin\javac FirstClosure.j

    Java 7のクロージャ(BGGA版)のプロトタイプを試してみた - kmizuの日記
  • 1