运维开发网

点读者monad scala

运维开发网 https://www.qedev.com 2020-07-30 13:23 出处:网络 作者:运维开发网整理
有没有办法,如何在Reader上下文中轻松指出一个值? 我可以使用Reader对象并忽略上下文: Reader { _ ⇒ 3 } Scalaz似乎有一个具体的方法点.我明白了,这是在Applicative上定义的.我想,有一些技巧,如何将值放入Reader上下文中. 实际上有一个Reader的Applicative实例,你可以像这样使用它(当然你应该用你希望你的环境的类型替换String):
有没有办法,如何在Reader上下文中轻松指出一个值?

我可以使用Reader对象并忽略上下文:

Reader {
  _ ⇒ 3
}

Scalaz似乎有一个具体的方法点.我明白了,这是在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]

但是,它们或多或少都相互之间(和您的解决方案)相同.

0

精彩评论

暂无评论...
验证码 换一张
取 消