有没有办法,如何轻松地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]
但是,这些都或多或少地彼此等效(以及您的解决方案)。