31 lines
1.0 KiB
Python
31 lines
1.0 KiB
Python
# 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_))
|
|
)
|
|
)
|
|
)
|
|
)
|