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

proptics.syntax.applied.AppliedEmptySyntax.scala Maven / Gradle / Ivy

package proptics.syntax.applied

import proptics._
import proptics.typeclass.Empty

trait AppliedEmptySyntax {
  implicit final def appliedLensEmptyOps[S, T](appliedLens: AppliedLens[S, T]): AppliedLensEmptyOps[S, T] =
    AppliedLensEmptyOps(appliedLens)

  implicit final def appliedFoldEmptyOps[S, T](appliedFold: AppliedFold[S, T]): AppliedFoldEmptyOps[S, T] =
    AppliedFoldEmptyOps(appliedFold)

  implicit final def appliedAffineTraversalEmptyOps[S, T](appliedPrism: AppliedPrism[S, T]): AppliedPrismEmptyOps[S, T] =
    AppliedPrismEmptyOps(appliedPrism)

  implicit final def appliedAffineTraversalEmptyOps[S, T](appliedAffineTraversal: AppliedAffineTraversal[S, T]): AppliedAffineTraversalEmptyOps[S, T] =
    AppliedAffineTraversalEmptyOps(appliedAffineTraversal)

  implicit final def appliedTraversalEmptyOps[S, T](appliedTraversal: AppliedTraversal[S, T]): AppliedTraversalEmptyOps[S, T] =
    AppliedTraversalEmptyOps(appliedTraversal)
}

final case class AppliedLensEmptyOps[S, T](private val appliedLens: AppliedLens[S, T]) extends AnyVal {
  /** provide a way to know if a structure `T` is empty */
  def empty(implicit ev: Empty[T]): AppliedAffineTraversal[S, Unit] = appliedLens.andThen(ev.empty)
}

final case class AppliedFoldEmptyOps[S, T](private val appliedFold: AppliedFold[S, T]) extends AnyVal {
  /** provide a way to know if a structure `T` is empty */
  def empty(implicit ev: Empty[T]): AppliedFold[S, Unit] = appliedFold.andThen(ev.empty)
}

final case class AppliedPrismEmptyOps[S, T](private val appliedPrism: AppliedPrism[S, T]) extends AnyVal {
  /** provide a way to know if a structure `T` is empty */
  def empty(implicit ev: Empty[T]): AppliedPrism[S, Unit] = appliedPrism.andThen(ev.empty)
}

final case class AppliedAffineTraversalEmptyOps[S, T](private val appliedAffineTraversal: AppliedAffineTraversal[S, T]) extends AnyVal {
  /** provide a way to know if a structure `T` is empty */
  def empty(implicit ev: Empty[T]): AppliedAffineTraversal[S, Unit] = appliedAffineTraversal.andThen(ev.empty)
}

final case class AppliedTraversalEmptyOps[S, T](private val appliedTraversal: AppliedTraversal[S, T]) extends AnyVal {
  /** provide a way to know if a structure `T` is empty */
  def empty(implicit ev: Empty[T]): AppliedTraversal[S, Unit] = appliedTraversal.andThen(ev.empty)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy