有没有办法,如何轻松地point在Reader上下文中赋值?
我可以使用Reader对象并忽略上下文:
Reader {
_ ⇒ 3
}
Scalaz 似乎point对此有专门的方法。我明白了,这是在Applicative. 我想,有一些技巧,如何将值放入Reader上下文中。
实际上有一个Applicative实例Reader,你可以像这样使用它(你当然应该String用你想要你的环境的任何类型替换):
3.point[({type L[X] = Reader[String, X]})#L]
如果您希望避免丑陋的类型 lambda 并且不介意定义额外的类型别名,则可以编写以下代码:
type MyReader[X] = Reader[String, X]
3.point[MyReader]
Scalaz 7 还提供了一个很好的简写方式,使它更加简洁:
3.liftReader[String]
但是,这些都或多或少地彼此等效(以及您的解决方案)。