All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scalaz.syntax.EqualSyntax.scala Maven / Gradle / Ivy

The newest version!
package scalaz
package syntax

/** Wraps a value `self` and provides methods related to `Equal` */
final class EqualOps[F] private[syntax](val self: F)(implicit val F: Equal[F]) extends Ops[F] {
  ////

  final def ===(other: F): Boolean = (self.asInstanceOf[AnyRef] eq other.asInstanceOf[AnyRef]) || F.equal(self, other)
  final def /==(other: F): Boolean = !F.equal(self, other)
  final def =/=(other: F): Boolean = /==(other)
  final def ≟(other: F): Boolean = (self.asInstanceOf[AnyRef] eq other.asInstanceOf[AnyRef]) || F.equal(self, other)
  final def ≠(other: F): Boolean = !F.equal(self, other)

  /** Raises an exception unless self === other. */
  final def assert_===[B](other: B)(implicit S: Show[F], ev: B <:< F): Unit =
      if (/==(other)) sys.error(S.shows(self) + " ≠ " + S.shows(ev(other)))

  ////
}

trait ToEqualOps  {
  implicit def ToEqualOps[F](v: F)(implicit F0: Equal[F]): EqualOps[F] =
    new EqualOps[F](v)

  ////

  ////
}

trait EqualSyntax[F]  {
  implicit def ToEqualOps(v: F): EqualOps[F] = new EqualOps[F](v)(EqualSyntax.this.F)

  def F: Equal[F]
  ////

  ////
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy