paw*_*icz 1 scala scalaz scalaz7
当我使用Scalaz进行编码时,我经常遇到问题,范围内没有隐含的内容.我认为在大量的软件包scalaz中应该存在一些默认的含义,但要么我不知道哪里有没有.
假设我们想要show
任何Any
scalaz(我使用scalaz 7):
scala> import scalaz._
import scalaz._
scala> import Scalaz._
import Scalaz._
scala> {def a: Any = "sratatata"; a}.show
<console>:14: error: could not find implicit value for parameter F0: scalaz.Show[Any]
{def a: Any = "sratatata"; a}.show
^
Run Code Online (Sandbox Code Playgroud)
这是行不通的Show[Any]
,因为范围没有隐含.
为什么Scalaz不提供它?使用某些全球性的好方法是Show[A]
什么?我的意思是这样的:
scala> implicit def anyShow[A] = Show.showFromToString[A]
anyShow: [A]=> scalaz.Show[A]
scala> {def a: Any = "sratatata"; a}.show
res0: scalaz.Cord = sratatata
Run Code Online (Sandbox Code Playgroud)
我觉得同样的感觉Equal
.
编辑
我已经尝试在添加的答案中提到,import scalaz.syntax.ShowSyntax
但这并不能解决我的问题.看到:
scala> import scalaz._
import scalaz._
scala> import Scalaz._
import Scalaz._
scala> import scalaz.syntax._
import scalaz.syntax._
scala> import scalaz.syntax.ToShowOps
import scalaz.syntax.ToShowOps
scala> import scalaz.syntax.ShowSyntax
import scalaz.syntax.ShowSyntax
scala> {def a: Any = "sratatata"; a}.show
<console>:19: error: could not find implicit value for parameter F0: scalaz.Show[Any]
{def a: Any = "sratatata"; a}.show
Run Code Online (Sandbox Code Playgroud)
编译器仍然需要一些implicit scalaz.Show[Any]
.