Optional

fun <S, A> Optional(getOption: (S) -> <ERROR CLASS><A>, set: (S, A) -> S): Optional<S, A>