有没有办法在 Reader
上下文中轻松地指向
一个值?
我可以使用 Reader
对象并忽略上下文:
Reader {
_ ⇒ 3
}
Scalaz 似乎有一个专门用于此目的的方法point
。我明白了,这是在 Applicative 上定义的。我想,有一些技巧,如何将值放入 Reader
上下文中。
最佳答案
事实上,Reader
有一个 Applicative
实例,您可以像这样使用它(当然,您应该将 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]
不过,这些或多或少彼此等效(以及您的解决方案)。
关于scala - 点阅读器 monad scala,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15836929/