DA.Optional
DA.Optional
The Optional type encapsulates an optional value. A value of type
Optional a either contains a value of type a (represented as Some a),
or it is empty (represented as None). Using Optional is a good way
to deal with errors or exceptional cases without resorting to
drastic measures such as error.
The Optional type is also an action. It is a simple kind of error
action, where all errors are represented by None. A richer
error action can be built using the Either type.
Functions
fromSome: Optional a -> a
The fromSome function extracts the element out of a Some and
throws an error if its argument is None.
Note that in most cases you should prefer using fromSomeNote
to get a better error on failures.
Like fromSome but with a custom error message.
: [Optional a] -> [a]
The catOptionals function takes a list of Optionals and returns a
list of all the Some values.
: [a] -> Optional a
The listToOptional function returns None on an empty list or
Some a where a is the first element of the list.
: Optional a -> [a]
The optionalToList function returns an empty list when given
None or a singleton list when not given None.
: a -> Optional a -> a
The fromOptional function takes a default value and a Optional
value. If the Optional is None, it returns the default values
otherwise, it returns the value contained in the Optional.
The isSome function returns True iff its argument is of the
form Some _.
The isNone function returns True iff its argument is
None.
: (a -> Optional b) -> [a] -> [b]
The mapOptional function is a version of map which can throw out
elements. In particular, the functional argument returns something
of type Optional b. If this is None, no element is added on to
the result list. If it is Some b, then b is included in the
result list.
: Applicative m => Optional a -> (a -> m ()) -> m ()
Perform some operation on Some, given the field inside the
Some.
: (a -> Optional b) -> [a] -> Optional b
The findOptional returns the value of the predicate at the first
element where it returns Some. findOptional is similar to find but it
allows you to return a value from the predicate. This is useful both as a more
type safe version if the predicate corresponds to a pattern match
and for performance to avoid duplicating work performed in the predicate.