Source code for redex.combinator._identity
"""The identity operator."""
from redex.stack import stackmethod, verify_stack_size, Stack
from redex.function import Signature
from redex.combinator._base import Combinator
# pylint: disable=too-few-public-methods
[docs]class Identity(Combinator):
"""The identity combinator."""
@stackmethod
def __call__(self, stack: Stack) -> Stack:
verify_stack_size(self, stack, self.signature)
return stack
[docs]def identity(n_in: int = 1) -> Identity:
"""Always returns the same values that were used as arguments.
>>> from redex import combinator as cb
>>> identity = cb.identity()
>>> identity(1) == 1
True
Args:
n_in: a number of inputs.
Returns:
a combinator.
"""
return Identity(signature=Signature(n_in=n_in, n_out=n_in))