Source code for pymonad.operators.maybe

# --------------------------------------------------------
# (c) Copyright 2014, 2020 by Jason DeLaat.
# Licensed under BSD 3-clause licence.
# --------------------------------------------------------
""" Adds operators to the Maybe monad. """
from typing import TypeVar

import pymonad.maybe
import pymonad.monad
import pymonad.operators.operators

T = TypeVar('T') # pylint: disable=invalid-name

[docs]class Maybe(pymonad.operators.operators.MonadOperators, pymonad.maybe.Maybe[T]): """ See pymonad.operators.operators and pymonad.maybe. """
[docs]def Just(value: T) -> Maybe[T]: # pylint: disable=invalid-name """ A Maybe object representing the presence of an optional value. """ return Maybe(value, True)
# A Maybe object representing the absence of an optional value. Nothing = Maybe(None, False) # pylint: disable=invalid-name
[docs]class Option(Maybe[T]): # pylint: disable=too-many-ancestors """ An alias for the Maybe monad class. """ def __repr__(self): return f'Some {self.value}' if self.monoid else 'Nothing' # pylint: disable=no-member
[docs]def Some(value: T) -> Option[T]: # pylint: disable=invalid-name """ An Option object representing the presence of an optional value. """ return Option(value, True)