コンテキストpoint
内の値を簡単に取得する方法はありますか?
オブジェクトを使用してコンテキストを無視できます。Reader
Reader
Reader {
_ ⇒ 3
}
Scalaz には、point
このための具体的な方法があるようです。なるほど、それは で定義されていApplicative
ます。Reader
値をコンテキストに入れる方法には、いくつかのトリックがあると思います。
実際には、次のように使用できる の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]
ただし、これらはすべて互いに(およびソリューションと)多かれ少なかれ同等です。