3

コンテキストpoint内の値を簡単に取得する方法はありますか? オブジェクトを使用してコンテキストを無視できます。Reader
Reader

Reader {
  _ ⇒ 3
}
Scalaz には、pointこのための具体的な方法があるようです。なるほど、それは で定義されていApplicativeます。Reader値をコンテキストに入れる方法には、いくつかのトリックがあると思います。

4

1 に答える 1

7

実際には、次のように使用できる のApplicativeインスタンスがReaderあります (もちろんString、環境を希望するタイプに置き換える必要があります)。

3.point[({type L[X] = Reader[String, X]})#L]

醜いタイプのラムダを避け、追加のタイプ エイリアスを定義してもかまわない場合は、代わりに次のように記述できます。

type MyReader[X] = Reader[String, X]

3.point[MyReader]

Scalaz 7 は、これをさらに簡潔にするちょっとした省略表現も提供します。

3.liftReader[String]

ただし、これらはすべて互いに(およびソリューションと)多かれ少なかれ同等です。

于 2013-04-05T15:12:45.707 に答える