タグ

ブックマーク / modegramming.blogspot.com (5)

  • scala-sbt.g8

  • Scala Tips / Scala 2.10味見(10) - Try(2)

    TryとEitherは2つの状態による計算文脈を表現するという意味ではよく似たオブジェクトですが、Tryはファンクタ(Functor)かつモナド(Monad)であるのに対してEitherはそうではないという点が異なります。 Eitherは直和の性質を表現するために2つの状態を同じ比重で扱いますが、この点を徹底するためにファンクタやモナドにはしていないと思われます。EitherではLeftProjectionやRightProjectionと組み合わせることによって、ファンクタ的、モナド的な使い方も可能ですが使い勝手がよいとはいえません。 正常状態と異常状態の2つの状態を扱う場合、(1)出現頻度は正常状態の方が多い、(2)正常状態に対するロジックは複雑/異常状態に対するロジックは単純、(3)一度異常状態になると以降は異常状態を保持、となるケースが多いと思います。このようなケースでは、正常状態

  • Scala Tips / flatMapとbind(>>=)の違い

    ScalaのflatMapメソッドは、モナドのbindに対応するメソッドとして認識されています。つまり、基的にはScalazの>>=メソッドと同じ動作をするわけですが、微妙な機能差があります。 以下はListに対してflatMapメソッドを用いてモナドのbind処理を行ったものです。 scala> List(1, 2, 3).flatMap(x => if (x % 2 == 0) List(x, x) else Nil) res16: List[Int] = List(2, 2)これはScalazの>>=メソッドも全く同じ動作をします。 scala> List(1, 2, 3) >>= (x => if (x % 2 == 0) List(x, x) else Nil) res17: List[Int] = List(2, 2) 次の例さて、今度の例はListのコンテナに対してOpti

  • Scala Tips / Scala 2.10味見(3) - Future

    Scala 2.10の目玉機能の一つは並行プログラミング機能の大幅な刷新です。「SIP-14 - Futures and Promises」にもあるようにScala Aactors、Akka、Finagle、Scalazと乱立する並行プログラミング・フレームワークの共通基盤を提供するのが目的のようです。 並行プログラミングの重要機能の一つにfutureまたはpromiseがあります。Wikipediaによるとfutureとpromiseは基的に同じ意味を持つと考えてよいようです。 Scala 2.10ではFutureとPromiseの2つのオブジェクトを導入していますが、futureとpromiseの用語法は知った上で、あえて別機能を持った2つのオブジェクトとして提供している、ということだと思います。 今回はその一つFutureがテーマです。Futureの機能も色々あるのでまず簡単な使い

  • Scalaへのアプローチ

    4月29日(日)にニコニコ超会議 2012の超エンジニアミーティングのScalaユーザーグループのコマで「Scalaでプログラムを作りました」のタイトルでお話をさせていただきました。 当日使用したスライドは以下のものです。 http://www.slideshare.net/asami224/scala-12749382 セッションの目的は、JavaなどのOOPをやっていて、Scalaをこれから始めたい人向けの情報提供です。 大きく以下の情報を提供しています。 Scalaの使い所 Scalaプログラミングの魅力 ボク自身は最近はScalazでの型クラスベースのMonadicプログラミングに凝っているので、Scalaプログラミングの面白さというと、このあたりの紹介をしてみたくなるわけですが、これから関数型プログラミングを始める人には、かなりハードルが高い内容でセッションの趣旨と合いません。

    Scalaへのアプローチ
  • 1