Source code for pymonad.operators.reader

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

import pymonad.monad
import pymonad.operators.operators
import pymonad.reader

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


class _Reader(
    pymonad.operators.operators.MonadOperators, pymonad.reader._Reader[R, T]
):  # pylint: disable=protected-access
    """ See pymonad.operators.operators and pymonad.reader. """


[docs]def Reader(function: Callable[[R], T]) -> _Reader[R, T]: # pylint: disable=invalid-name """ Creates an instance of the Reader monad. Args: function: a function which takes the read-only data as input and returns any appropriate type. Result: An instance of the Reader monad. """ return _Reader(function, None)
Reader.apply = _Reader.apply Reader.insert = _Reader.insert