Module pairs

Implementation of pairs

lambda_calculus.terms.pairs.PAIR: Final = Abstraction(bound='x', body=Abstraction(bound='y', body=Abstraction(bound='f', body=Application(abstraction=Application(abstraction=Variable(name='f'), argument=Variable(name='x')), argument=Variable(name='y')))))

Term evaluating to a ordered pair of its two arguments.

lambda_calculus.terms.pairs.FIRST: Final = Abstraction(bound='p', body=Application(abstraction=Variable(name='p'), argument=Abstraction(bound='x', body=Abstraction(bound='y', body=Variable(name='x')))))

Term evaluating to the first value in its argument.

lambda_calculus.terms.pairs.SECOND: Final = Abstraction(bound='p', body=Application(abstraction=Variable(name='p'), argument=Abstraction(bound='x', body=Abstraction(bound='y', body=Variable(name='y')))))

Term evaluating to the second value in its argument.

lambda_calculus.terms.pairs.NIL: Final = Abstraction(bound='x', body=Abstraction(bound='x', body=Abstraction(bound='y', body=Variable(name='x'))))

Special Term encoding an empty pair.

lambda_calculus.terms.pairs.NULL: Final = Abstraction(bound='p', body=Application(abstraction=Variable(name='p'), argument=Abstraction(bound='x', body=Abstraction(bound='y', body=Abstraction(bound='x', body=Abstraction(bound='y', body=Variable(name='y')))))))

Term evaluating to logic.TRUE if its argument is NIL, logic.FALSE otherwise.