cou*_*ech 3 scala scalaz scalaz7
有没有办法,如何point在Reader上下文中轻松获得价值?
我可以使用Readerobject并忽略上下文:
Reader {
_ ? 3
}
Run Code Online (Sandbox Code Playgroud)
Scalaz似乎有一种point具体的方法.我知道,这是定义的Applicative.我想,有一些技巧,如何将值放入Reader上下文中.
实际上有一个Applicative实例Reader,您可以像这样使用(您当然应该替换String为您希望环境的任何类型):
3.point[({type L[X] = Reader[String, X]})#L]
Run Code Online (Sandbox Code Playgroud)
如果您更愿意避免使用丑陋的lambda类型,并且不介意定义额外的类型别名,则可以编写以下代码:
type MyReader[X] = Reader[String, X]
3.point[MyReader]
Run Code Online (Sandbox Code Playgroud)
Scalaz 7还提供了一些简洁的速度,使其更加清晰:
3.liftReader[String]
Run Code Online (Sandbox Code Playgroud)
但是,这些或多或少都相互之间(和您的解决方案)相同.