# Copyright (c) PARRRATE T&V 2021. All rights reserved. __all__ = ('PCall',) from bu4.linking.constructs.lcall import LCall from bu4.linking.states.afterlinking import AfterLinking from bu4.linking.states.linkingfinished import LinkingFinished from bu4.linking.states.linkingparsed import LinkingParsed from bu4.linking.states.linkingstate import LinkingState from bu4.linking.targets.allambda import ALLambda from bu4.parsing.constructs.parsed import Parsed class PCall(Parsed): def __init__(self, argument: Parsed, lambda_: Parsed): self.argument = argument self.lambda_ = lambda_ def link(self, promise: set[bytes]) -> LinkingState: return AfterLinking( LinkingParsed(promise, self.argument), ALLambda( lambda argument: AfterLinking( LinkingParsed(promise, self.lambda_), ALLambda( lambda lambda_: LinkingFinished(LCall(argument, lambda_)) ) ) ) )