Skip to content

Commit

Permalink
add void for Optional, traversal, Fold and Setter
Browse files Browse the repository at this point in the history
  • Loading branch information
julien-truffaut committed Jun 19, 2015
1 parent 57eb756 commit 03f1998
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 0 deletions.
4 changes: 4 additions & 0 deletions core/src/main/scala/monocle/Fold.scala
Expand Up @@ -136,6 +136,10 @@ object Fold extends FoldInstances {
s.fold(f,f)
}

/** [[Fold]] that points to nothing */
def void[S, A]: Fold[S, A] =
Optional.void.asFold

/** create a [[Fold]] from a [[Foldable]] */
def fromFoldable[F[_]: Foldable, A]: Fold[F[A], A] =
new Fold[F[A], A] {
Expand Down
4 changes: 4 additions & 0 deletions core/src/main/scala/monocle/Optional.scala
Expand Up @@ -236,6 +236,10 @@ object Optional {
def codiagonal[S]: Optional[S \/ S, S] =
POptional.codiagonal

/** [[Optional]] that points to nothing */
def void[S, A]: Optional[S, A] =
Optional[S, A](_ => None)(_ => identity)

/** alias for [[POptional]] apply restricted to monomorphic update */
def apply[S, A](_getOption: S => Option[A])(_set: A => S => S): Optional[S, A] =
new Optional[S, A]{
Expand Down
4 changes: 4 additions & 0 deletions core/src/main/scala/monocle/Setter.scala
Expand Up @@ -127,6 +127,10 @@ object Setter {
def codiagonal[S]: Setter[S \/ S, S] =
PSetter.codiagonal

/** [[Setter]] that points to nothing */
def void[S, A]: Setter[S, A] =
Optional.void.asSetter

/** alias for [[PSetter]] apply with a monomorphic modify function */
def apply[S, A](modify: (A => A) => S => S): Setter[S, A] =
PSetter(modify)
Expand Down
4 changes: 4 additions & 0 deletions core/src/main/scala/monocle/Traversal.scala
Expand Up @@ -222,6 +222,10 @@ object Traversal {
def codiagonal[S, T]: Traversal[S \/ S, S] =
PTraversal.codiagonal

/** [[Traversal]] that points to nothing */
def void[S, A]: Traversal[S, A] =
Optional.void.asTraversal

def apply2[S, A](get1: S => A, get2: S => A)(set: (A, A, S) => S): Traversal[S, A] =
PTraversal.apply2(get1, get2)(set)

Expand Down

0 comments on commit 03f1998

Please sign in to comment.