builtup4/bu4/linking/constructs/llambda.py
2021-08-20 05:41:23 +03:00

28 lines
756 B
Python

# Copyright (c) PARRRATE T&V 2021. All rights reserved.
from bu4.evaluation.av.envtype import envtype
from bu4.evaluation.constructs.elambda import ELambda
from bu4.evaluation.constructs.evaluable import Evaluable
from bu4.linking.constructs.linked import Linked
__all__ = ('LLambda',)
class LLambda(Linked):
value: Linked
def __init__(self, name: bytes, value: Linked):
self.name = name
self.value = value
self.future = self.value.future - {self.name}
def evaluable(self, env: envtype) -> Evaluable:
return ELambda(
{name: env[name] for name in self.future},
self.name,
self.value
)
def __str__(self):
return f'({self.name.decode()}){self.value}'