from bu4.evaluation.elinked import ELinked from bu4.evaluation.lambdaenv import LambdaEnv from bu4.parsing.linked import Linked from bu4.evaluation.aftervalue import EValue, envtype, Evaluable __all__ = ('ELambda',) class ELambda(EValue): def __init__(self, env: envtype, name: bytes, value: Linked): self.env = env self.name = name self.value = value def call(self, argument: Evaluable) -> Evaluable: return ELinked( LambdaEnv(self.env, self.name, argument), self.value ) def __str__(self): return f'({self.name.decode()}){self.value}'