2017年11月27日のブックマーク (2件)

  • Try はモナドじゃない - tkawachi Blog

    Principles of Reactive Programming 最初週の講義で言ってたこと。 忘れそうなのでメモ。 モナドであるためにはモナド則を満たさねばならない。 モナド則は以下の3つ。 Associativity: (m flatMap f) flatMap g == m flatMap (x => f(x) flatMap g) Left unit: unit(x) flatMap f == f(x) Right unit: m flatMap unit == m ちなみにすごいHaskellでモナド則は次のように書かれている。 結合法則: (m >>= f) >>= g と m >>= (\x -> f x >>= g) が等価 左恒等性: return x >>= f と f x が等価 右恒等性: m >>= return と m が等価 flatMap を >>=

    Aoino
    Aoino 2017/11/27
  • Scala用のDIライブラリAirframeを試してみた - たけぞう瀕死ブログ

    ScalaではJavaと違ってDIコンテナの必要性を感じることがあまりないのですが、フレームワークを作っているとユーザコードにフレームワークが提供するコンポーネントを供給したり、フレームワーク自体を拡張するための拡張ポイントを提供するためにDIコンテナ的なものを使いたいというケースがあったりします。 PlayではGoogle Guiceが導入されていますが、もう少し簡潔でScalaらしいDIコンテナはないものかと思っていたところ@taroleoさんがAirframeというライブラリを開発されていたのを思い出したので試してみました。 github.com 基的にはフィールドインジェクションぽい感じで、DIするフィールドを以下のように宣言しておきます。 import wvlet.airframe._ class AccountController { val accountService =

    Scala用のDIライブラリAirframeを試してみた - たけぞう瀕死ブログ
    Aoino
    Aoino 2017/11/27