タグ

ブックマーク / xuwei-k.hatenablog.com (5)

  • scala.PartialFunction condOpt を使おう - xuwei-k's blog

    scalaz の |> みたいに、自身をpimpして、かつFunction1ではなくPartialFunction[A,B] を受け取って、Option[B]を返すものがほしい・・・ 2013-02-18 16:26:55 via web pimpするやつじゃないけど、標準であるじゃん URL URL 2013-02-18 16:30:07 via web というわけで、なんとなくたまに欲しくなっていた気もするけど、今までほぼ使ったことなかったPartialFunctionのcondOptについて使い方を説明してみます。 https://github.com/scala/scala/blob/v2.11.6/src/library/scala/PartialFunction.scala#L276-L286 使い道は、以下のようなパターン(play 2.1.0 のコードより) https:/

    tlync
    tlync 2015/04/07
    今さらながら PartialFunction.condOpt はじめて知った。PartialFunction.condOpt って書くタイプ数と読み手への負荷を考えると、場合によっては使わないコードの方が意図が明確で分かりやすい気もしてしまうけど
  • コップ本のMonadに関する記述が一部不正確な件 - xuwei-k's blog

    Scalaスケーラブルプログラミング第2版 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘出版社/メーカー: インプレスジャパン発売日: 2011/09/27メディア: 単行(ソフトカバー)購入: 12人 クリック: 235回この商品を含むブログ (46件) を見る 一部不正確とは 「MonadとMonadPlusを区別していなくて、witFilterメソッドの実装がMonadに対して必須のように書いてある」 ということです。 以下それの解説的なものを少し書きますが、上記の一文で意味わかる人はこれ以降読まなくていいと思います ちょっと長くなるけど引用。第2版の450ページ map、flatMap、withFilterは、モナドの演算として定式化できる。そうした定式化により、上に示した型を正確に持てるようになる。さらに、あ

    コップ本のMonadに関する記述が一部不正確な件 - xuwei-k's blog
    tlync
    tlync 2015/01/28
    Odersky 先生、cousera でも (モナド則は満たさないと断りはいれた上で) 便宜上 Try をモナドと呼ぶと言っていたし、あまり厳密に区別する気はないのかなぁ
  • Scala2.11.3がでたけど絶対使っちゃダメです - xuwei-k's blog

    一言でいうとバイナリ互換崩れてるから。AbstractMethodError発生の可能性があります。2.11.2を使い続けるか、新しくでるはずのやつ待ちましょう。 公式にアナウンスあって、気が向けば詳細な経緯とか理由書くかもしれませんし、書かないかもしれません。ひとまずURLだけ貼っておきます https://issues.scala-lang.org/browse/SI-8899 Scalaコンパイラチームからの公式アナウンス↓ https://groups.google.com/d/topic/scala-internals/SSD9BNJaFbU/discussion

    Scala2.11.3がでたけど絶対使っちゃダメです - xuwei-k's blog
    tlync
    tlync 2014/10/13
    ほう…
  • Reactive Manifestoではないほうの本当のReactive Programming? - xuwei-k's blog

    タイトルにわざとReactive Manifestoを入れたのは、まずこちらのtogetterご覧ください pokarimさんのReactive Manifestoに関する印象 あと、タイトルの最後に、はてなマーク入れたのは、自分がReactive Programmingに詳しくなく、色々自信ないからです。 間違いあったらツッコミください さて、Reactive Programmingとはそもそもなんなのか?厳密に定義できるのか?は、詳細に議論できるほどの知識を持ち合わせていないので逃げます(おい まずは、話のとっかかりとして、上記のtogetterの主役となってるpokarimさんの過去の記事(4年近く前!) を結構長めに引用してみます。(はてぶが600以上ついてる・・・) なぜリアクティブプログラミングは重要か。 まず次のような定義を行います。 a = 1 b = a * 3 そしてa

    Reactive Manifestoではないほうの本当のReactive Programming? - xuwei-k's blog
    tlync
    tlync 2014/09/27
    知識がないと最初に入ってきた情報が正とインプットされてしまうんだよね。なんで、それをまた揺さぶってくれるこういう情報は最高におもしろい。
  • Scalaにおける細かい最適化のプラクティス - xuwei-k's blog

    列挙順自体はとくに意味ありません。あと「どの最適化がどのくらい速くなるのか?」を詳細に計ったことはないですし、「原理的にこうなってるから(ry」というのを説明するに過ぎません。中には「JITで無意味になるようなどうでもいい細かすぎること」も書いてありますし、最適化のトレードオフとして失うものもあるので、そのあたり自己責任でお願いします。当に最適化が必要とされる場合は、以下のものを無闇に実行するよりまず計測したほうがいいのは、言うまでもありません。*1 1. private[this]をつかえ scalaのvalやvarは、private[this]にしたときのみ、直接のフィールドアクセスになります(それ以外ではメソッド呼び出し)。シングルトンのobjectの場合も同様です。private[this]をつけられる場合はできるだけつけましょう 2. なんでもかんでもListをつかうな 最初の

    Scalaにおける細かい最適化のプラクティス - xuwei-k's blog
    tlync
    tlync 2013/07/09
    正直面倒臭くてゆとり言語に逃げたくなる気持ちも分かる
  • 1