11
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Scalaz を使う

Posted at

Scalaz は Scala 上で型クラスを利用するためのライブラリです。
使えると便利なのですが、ライトに使いたい人向けにどうやって使えばいいか解説する記事が少ないのでちょっと書いてみます。

import Scalaz._ はダメ

Scalaz の使い方を検索すると、多くの記事に

import scalaz._
import Scalaz._

をファイル先頭に記述すると書いてありますが、これはやってはいけません。
特に IntelliJ などを使っている人は重すぎて辛くなります。
Scalaz は機能ごとに import できるので、それを使うようにしましょう。

import のしかた

Scalaz で import する時は、どの型クラスのどのインスタンスを使うかをそれぞれ明示します。
例えば Monad 型クラスのインスタンスとして List を使いたい場合、

import scalaz._
import syntax.monad._
import std.list._

という具合にします。

とりあえず使ってみる

Scalaz は少なからず趣味が入ったライブラリですが、中には痒いところに手が届く絶妙に便利な関数があったりします。
個人的なお勧めは multiply と traverse です。
こんな感じで使えます。

import scalaz._
import syntax.monoid._
import std.string._

"hello".multiply(3)          // hellohellohello
import scalaz._
import syntax.traverse._
import std.list._
import std.option._

// stoi : String => Option[Int]
// 与えられた英語の数字を数値に変換する関数とする
List("one", "two", "three").traverse(stoi)   // Some(List(1, 2, 3))
List("one", "two", "hello").traverse(stoi)   // None

小難しい型クラスの勉強はさておき、とりあえず使ってみると良いと思います。

11
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?