OptionOptics

class Object
trait Matchable
class Any
object Monocle
object all
object option

Value members

Concrete methods

final def none[A]: Prism[Option[A], Unit]
final def optionToDisjunction[A]: Iso[Option[A], Either[Unit, A]]
final def pOptionToDisjunction[A, B]: PIso[Option[A], Option[B], Either[Unit, A], Either[Unit, B]]
final def pSome[A, B]: PPrism[Option[A], Option[B], A, B]
final def some[A]: Prism[Option[A], A]
final def withDefault[A](defaultValue: A): Iso[Option[A], A]

Creates an Iso that maps None to defaultValue and inversely.

Creates an Iso that maps None to defaultValue and inversely.

val defaultTo0 = withDefault(0)
defaultTo0.get(None) == 0
defaultTo0.get(Some(1)) == 1
defaultTo0.reverseGet(0) == None
defaultTo0.reverseGet(1) == Some(1)

withDefault is a valid Iso only if we consider the set of A without defaultValue. For example, Some(0) breaks the round-trip property of Iso:

defaultTo0.reverseGet(defaultTo0.get(Some(0))) == None
See also

This method is called non in Haskell Lens.

Source
Option.scala