Using the Scala reflection API in a REPL is usually a good way to start an exploration like this:
scala> import scala.reflect.runtime.universe.reify import scala.reflect.runtime.universe.reify scala> import scalaz._, Scalaz._ import scalaz._ import Scalaz._ scala> println(reify(1 gt 2)) Expr[Boolean](Scalaz.ToOrderOps(1)(Scalaz.intInstance).gt(2)) scala> println(reify("a" gt "b")) Expr[Boolean](Scalaz.ToOrderOps("a")(Scalaz.stringInstance).gt("b"))
ToOrderOps here is a method, not a sign, and Scalaz means you see it because scalaz.Scalaz mixes in ToOrderOps , so I think this approach applies to all three of your points.
source share