Scalazの<|メソッドがちょっと便利

Scalazには様々な型クラスやモナドがありますが、ちょっとした便利メソッドみたいなものもあります。それらの中でも個人的に便利だなと思ったのが<|です。

このメソッドは左辺の値に対して右辺の関数を適用し、左辺の値を返します。言葉だけだと何に使うのかさっぱりだと思うので例をあげてみます。たとえば以下のようなメソッド呼び出しがあるとします。

foo(bar())

このときfoo()の引数に渡っている値をログに出力したいとします。通常であれば以下のようにコードを書き換えるのではないかと思います。

val x = bar()
logger.info(x)
foo(x)

<|を使うとこれを以下のように書くことができます。

foo(bar() <| logger.info)

また、JavaライブラリをScalaから使う場合にありがちですが、以下のように初期化の必要があるオブジェクトを使う場合、

val conn = getConnection()
conn.setAutoCommit(false)

初期化を行うコードを<|に渡す関数に記述することができます。FluentなAPIになっていないライブラリの場合に便利な使い方です。

val conn = getConnection() <| { _.setAutoCommit(false) }

こんな感じのユーティリティメソッドを自作して使っているというケースもあるんじゃないかと思いますし、実際大した実装が必要なものでもありませんが、準標準的なライブラリで提供されていることで共通言語として使いやすいというメリットは大きいです。

これはほんの一例ですが、このようにScalazにはちょっとした便利メソッドもたくさんあるので、あまり構えずに使えそうな機能から少しずつ導入していくのもよいのではないかと思います。