from bu4.evaluation.enull import ENull from bu4.codes import CODE_NULL from bu4.parsing.linked import Linked, LinkingState, Parsed from bu4.linking.linkingfinished import LinkingFinished from bu4.evaluation.aftervalue import envtype, Evaluable __all__ = ('LNull', 'PNull',) class LNull(Linked): def __init__(self): self.future = set() def link(self) -> LinkingState: return LinkingFinished(self) def evaluable(self, env: envtype) -> Evaluable: return ENull() def __str__(self): return '?' def unlink(self) -> Parsed: return PNull() class PNull(Parsed): def link(self, promise: set[bytes]) -> 'Linked': return LNull() def __bytes__(self): return bytes([CODE_NULL])