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

  • 『Scalaスケーラブルプログラミング第2版』 2011/09/27発売予定 - kmizuの日記

    Scala作者が執筆に携わっていることもあり、国内のScala書籍の中では一番知名度が高いではないでしょうか。Scalaユーザの方は、正式名称よりも『コップ』の名称の方をよく目にするかもしれません。 ともあれ、タイトル通り、『Scalaスケーラブルプログラミング第2版』2011年9月27日に発売予定です。さて、何故このの宣伝をしているかというと、私もほんの少しですが、Scala 2.9の新機能解説(原著第二版出版時には2.9がリリースされていなかった)という形で執筆に携わったからです。コップのそうそうたる面子と比べると見劣りしますが、そこはご容赦を。 個人的には、第2版の醍醐味は、なんといっても、2.8コレクションアーキテクチャの解説部分に尽きると思います。Web上でも公開され、有志の方による翻訳版もあるものですが、加筆されている部分や、読みやすいように改善されている箇所もあります

    『Scalaスケーラブルプログラミング第2版』 2011/09/27発売予定 - kmizuの日記
    bleis-tift
    bleis-tift 2011/08/18
    買うます
  • 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の日記
    bleis-tift
    bleis-tift 2010/04/26
    無事帰国できたようでなによりです!
  • Int#+の怪 - kmizuの日記

    Scalaでは32ビット符号付き整数を表すIntは特別な型ではなく、単にAnyのサブクラスであるAnyValのサブクラスであるIntクラスだという事になっているし、実際そのように扱われる。また、Intに対する+などの各種演算子も単なるIntクラスのメソッドであることになっているし、実際にそのように扱われる。では、Int型の+が単なるメソッドだとしたら、JavaのリフレクションAPIを経由して+メソッドを表すMethodオブジェクトを取得し、それを呼び出すことはできるのだろうか? 結論から言うと、無理である。まず、ScalaのInt型を使ったコードがクラスファイルにコンパイルされる際はJVMレベルでは可能な限りJVMのプリミティブ型であるint型を利用し、コレクションにInt型の値が格納される場合など、それが不可能な場合はjava.lang.Integer型に自動的にboxingされるように

    Int#+の怪 - kmizuの日記
    bleis-tift
    bleis-tift 2010/01/18
    ありがとうございます!
  • Zipper in Scala - kmizuの日記

    yharaさんのRubyZipperを実装してみたを見て、ScalaでもZipperを実装してみたくなったので、書いてみた。 実装は、基的には k.inabaさんのZipperの解説エントリに書かれていたのをほぼそのままScalaに移植しただけのもの。 ただ、それだけだと何なので、Scalaっぽい書き方ができるように、色々メソッドを付け足してみた。また、Scalaのコレクションとしても振舞えるように、trait Seqを継承している。さらに、Zipperはimmutableなデータ構造であり、安全にcovariantにできるため、covariantにするアノテーション(+)も付加してある。 ちょっと悩んだのが、map,flatMap,filterなどの高階関数の実装で、Zipperをイテレータの一種として見ると、現在のカーソルより後ろの部分にのみ、引数で渡された関数を適用するのが良い気

    Zipper in Scala - kmizuの日記
  • Dictionaryリテラルっぽい何か - kmizuの日記

    (中略) static void Main(string[] args) { var dict = Dict.Create( (out string key, out int val) => { key = "hoge"; val = 0; }, (out string key, out int val) => { key = "piyo"; val = 10; }); foreach (var p in dict) { Console.WriteLine(p.ToString()); } } (中略) これは・・・ないな。 KeyValue リテラルが欲しい! http://d.hatena.ne.jp/bleis-tift/20090626/1246002896 C#はほとんど触ったことが無いのですが、もうちょっとDictionaryリテラルっぽくできるのではないかと思い、Generi

    Dictionaryリテラルっぽい何か - kmizuの日記
    bleis-tift
    bleis-tift 2009/06/26
    Dictionary リテラルっぽい書き方。XのかわりにIsって名前にすればウマー
  • 1