/** * Control structures like the disjoint union type {@linkplain io.vavr.control.Either}, the optional value type * {@linkplain io.vavr.control.Option} and {@linkplain io.vavr.control.Try} for exception handling. * <p> * <strong>Either</strong> * <p> * The control package contains an implementation of the {@linkplain io.vavr.control.Either} control which is either Left or Right. * A given Either is projected to a Left or a Right. * Both cases can be further processed with control operations map, flatMap, filter. * If a Right is projected to a Left, the Left control operations have no effect on the Right value. * If a Left is projected to a Right, the Right control operations have no effect on the Left value. * <p> * <strong>Option</strong> * <p> * The Option control is a replacement for {@linkplain java.util.Optional}. An Option is either * {@linkplain io.vavr.control.Option.Some} value or {@linkplain io.vavr.control.Option.None}. * In contrast to Optional, Option supports null values, i.e. it is possible to call {@code new Some(null)}. * However, {@code Option.of(null)} results in None. * <p> * <strong>Try</strong> * <p> * Exceptions are handled with the {@linkplain io.vavr.control.Try} control which is either a * {@linkplain io.vavr.control.Try.Success}, containing a result, or a {@linkplain io.vavr.control.Try.Failure}, * containing an Exception. */ package io.vavr.control;