有没有办法,如何在point
上下文中轻松Reader
值?
我可以使用Reader
对象并忽略上下文:
Reader {
_ ⇒ 3
}
Scalaz似乎有一个方法point
。我明白了,这是在Applicative
上定义的。我想,有一些技巧,如何将值放入Reader
上下文。
答案 0 :(得分:7)
Applicative
实际上有一个Reader
实例,您可以这样使用(当然,您应该将String
替换为您希望环境类型的任何类型):< / p>
3.point[({type L[X] = Reader[String, X]})#L]
如果您更愿意避免使用丑陋的lambda类型,并且不介意定义额外的类型别名,则可以编写以下内容:
type MyReader[X] = Reader[String, X]
3.point[MyReader]
Scalaz 7还提供了一些简洁的速度,使其更加清晰:
3.liftReader[String]
但这些或多或少都相互之间(和您的解决方案)相同。