Prism

fun <S, A> Prism(getOption: (source: S) -> Option<A>, reverseGet: (focus: A) -> S): Prism<S, A>

Invoke operator overload to create a PPrism of type S with a focus A where A is a subtype of S Can also be used to construct Prism