3

有没有办法,如何轻松地pointReader上下文中赋值?
我可以使用Reader对象并忽略上下文:

Reader {
  _ ⇒ 3
}
Scalaz 似乎point对此有专门的方法。我明白了,这是在Applicative. 我想,有一些技巧,如何将值放入Reader上下文中。

4

1 回答 1

7

实际上有一个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]

但是,这些都或多或少地彼此等效(以及您的解决方案)。

于 2013-04-05T15:12:45.707 回答