Scalaz を使ってコードを書いていると、スコープに暗黙的なものがないという問題に遭遇することがよくあります。膨大なパッケージの scalaz のどこかにデフォルトの暗黙関数がいくつかあるはずだと思いますが、どこにあるかわからないか、まったくありません。
show
scalaz でanyを使いたいとしますAny
(私は 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
^
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
私は同じタッチだと思います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
コンパイラはまだいくつかを必要としていimplicit scalaz.Show[Any]
ます。