私はスカラズを学んでいますが、今はIO
モナドの点を理解しようとしています。私はIOモナドについてthis articleを読み、最も単純な例を自分で実行しようとしている:ScalaのIOモナドの理解
val io = println("test").pure[IO]
println("before")
io.unsafePerformIO()
予想通りはい、それは動作します。それは印刷する
before
test
しかし、私はIOモナドの要点をキャッチすることはできません。トリックは何ですか?私が参照した記事で指定されているように「置換を維持する」を除いて。
この置換はあまりにも役に立たないようです。説明していただけますか?
私は考えることができます。私はいくつかの特徴を持っている想像:
trait Reader{
def read(): List[Int]
}
trait Writer[T]{
def write(t: T): Unit
}
は、だから私は(私の場合は
List
)モナドの値を読み取ることができるリーダーを持っています。そして、コンテナからすべての値をどこか別の場所に書き込んで、トランスフメンテーションを実行する必要があります。その場合、IOモナドは役に立ちますか?
ありがとうございますが、私はIO [List [T]]を変換することに関して何か質問があります。 'Scalaz'は' IO'モナドのための変圧器を持っていますか? 'IoT [T]'を使うのがとても便利でしょう。 –
'IO [List [T]]'を持っているなら、スカラには 'ListT'トランスが必要です。 –