Skip to content

Monad

Monad

Bases: Applicative[F, A], Protocol

Monad

Source code in funclift/monad.py
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class Monad(Applicative[F, A], Protocol):
    """Monad"""

    @abstractmethod
    def flatmap(self, f: Callable[[A], Monad[F, B]]) -> Monad[F, B]:
        """_summary_

        Args:
            f (Callable[[A], Monad[F, B]]): _description_

        Returns:
            Monad[F, B]: _description_
        """
        ...

    @staticmethod
    def mempty(a: B) -> Monad[F, B]:
        """_summary_

        Args:
            a (B): _description_

        Returns:
            Monad[F, B]: _description_
        """
        ...

flatmap(f) abstractmethod

summary

Parameters:

Name Type Description Default
f Callable[[A], Monad[F, B]]

description

required

Returns:

Type Description
Monad[F, B]

Monad[F, B]: description

Source code in funclift/monad.py
35
36
37
38
39
40
41
42
43
44
45
@abstractmethod
def flatmap(self, f: Callable[[A], Monad[F, B]]) -> Monad[F, B]:
    """_summary_

    Args:
        f (Callable[[A], Monad[F, B]]): _description_

    Returns:
        Monad[F, B]: _description_
    """
    ...

mempty(a) staticmethod

summary

Parameters:

Name Type Description Default
a B

description

required

Returns:

Type Description
Monad[F, B]

Monad[F, B]: description

Source code in funclift/monad.py
47
48
49
50
51
52
53
54
55
56
57
@staticmethod
def mempty(a: B) -> Monad[F, B]:
    """_summary_

    Args:
        a (B): _description_

    Returns:
        Monad[F, B]: _description_
    """
    ...

MonadBase

MonadBase

Source code in funclift/monad.py
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class MonadBase():
    """MonadBase"""

    # def flatMap(fa: F[A], f: A -> F[B]) -> F[B]:
    @classmethod
    def flatmap(cls, fa: Any, f: Any) -> Any: ...

    # def pure(a: A) -> F[A]:
    @classmethod
    def pure(cls, a: Any) -> Any: ...

    # map can be implemented in terms of flatMap and pure
    @classmethod
    def fmap(cls, fa: Any, f: Any) -> Any:
        return cls.flatmap(fa, lambda a: cls.pure(f(a)))