LLambda constructor may return LDelayed

This commit is contained in:
AF 2021-12-04 19:44:06 +03:00
parent 609371048d
commit a1c6da26db
15 changed files with 22 additions and 18 deletions

View File

@ -6,7 +6,7 @@ from bu4.evaluation.constructs.evaluable import Evaluable
from bu4.evaluation.constructs.evalue import EValue
from bu4.indexing.constructs.indexed import Indexed
from bu4.indexing.evaluation.eivtype import eivtype
from bu4.linkable.evaluation.elvtype import elvtype
from bu4.linking.evaluation.elvtype import elvtype
from bu4.linking.constructs.linked import Linked
from bu4.parsing.extensions.CodeExtension import CodeExtension
from bu4.transform.states.transformfinished import TransformFinished

View File

@ -7,7 +7,7 @@ from bu4.evaluation.constructs.evaluable import Evaluable
from bu4.evaluation.constructs.evalue import EValue
from bu4.indexing.constructs.indexed import Indexed
from bu4.indexing.evaluation.eivtype import eivtype
from bu4.linkable.evaluation.elvtype import elvtype
from bu4.linking.evaluation.elvtype import elvtype
from bu4.linking.constructs.linked import Linked
from bu4.parsing.extensions.CodeExtension import CodeExtension
from bu4.transform.states.transformfinished import TransformFinished

View File

@ -9,7 +9,7 @@ from bu4.evaluation.targets.avanonymouscontainer import AVAnonymousContainer
from bu4.evaluation.targets.avcall import AVCall
from bu4.indexing.constructs.indexed import Indexed
from bu4.indexing.evaluation.eivtype import eivtype
from bu4.linkable.evaluation.elvtype import elvtype
from bu4.linking.evaluation.elvtype import elvtype
from bu4.linking.constructs.linked import Linked
from bu4.parsing.extensions.CodeExtension import CodeExtension
from bu4.transform.states.transformfinished import TransformFinished

View File

@ -6,8 +6,8 @@ from bu4.evaluation.constructs.evaluable import Evaluable
from bu4.evaluation.targets.avcall import AVCall
from bu4.indexing.constructs.icall import ICall
from bu4.indexing.constructs.indexed import Indexed
from bu4.linkable.evaluation.elvtype import elvtype
from bu4.linking.constructs.linked import Linked
from bu4.linking.evaluation.elvtype import elvtype
from bu4.transform.states.aftertransform import AfterTransform
from bu4.transform.states.transformfinished import TransformFinished
from bu4.transform.states.transformstart import TransformStart

View File

@ -5,8 +5,8 @@ from bu4.evaluation.constructs.edelayed import EDelayed
from bu4.evaluation.constructs.evaluable import Evaluable
from bu4.indexing.constructs.idelayed import IDelayed
from bu4.indexing.constructs.indexed import Indexed
from bu4.linkable.evaluation.elvtype import elvtype
from bu4.linking.constructs.linked import Linked
from bu4.linking.evaluation.elvtype import elvtype
from bu4.transform.states.aftertransform import AfterTransform
from bu4.transform.states.transformfinished import TransformFinished
from bu4.transform.states.transformstart import TransformStart

View File

@ -4,8 +4,8 @@ from bu4.evaluation.constructs.eexception import EException
from bu4.evaluation.constructs.evaluable import Evaluable
from bu4.indexing.constructs.iexception import IException
from bu4.indexing.constructs.indexed import Indexed
from bu4.linkable.evaluation.elvtype import elvtype
from bu4.linking.constructs.linked import Linked
from bu4.linking.evaluation.elvtype import elvtype
from bu4.transform.states.transformfinished import TransformFinished
from bu4.transform.states.transformstate import TransformState

View File

@ -3,7 +3,7 @@
from bu4.evaluation.constructs.attachable import Attachable
from bu4.evaluation.constructs.evaluable import Evaluable
from bu4.indexing.constructs.indexed import Indexed
from bu4.linkable.evaluation.elvtype import elvtype
from bu4.linking.evaluation.elvtype import elvtype
from bu4.transform.states.transformstate import TransformState
__all__ = ('Linked',)

View File

@ -6,9 +6,10 @@ from bu4.evaluation.constructs.evaluable import Evaluable
from bu4.indexing.constructs.idelayed import IDelayed
from bu4.indexing.constructs.ilambda import ILambda
from bu4.indexing.constructs.indexed import Indexed
from bu4.linkable.evaluation.ellambda import ELLambda
from bu4.linkable.evaluation.elvtype import elvtype
from bu4.linking.constructs.ldelayed import LDelayed
from bu4.linking.constructs.linked import Linked
from bu4.linking.evaluation.ellambda import ELLambda
from bu4.linking.evaluation.elvtype import elvtype
from bu4.transform.states.aftertransform import AfterTransform
from bu4.transform.states.transformfinished import TransformFinished
from bu4.transform.states.transformstart import TransformStart
@ -21,13 +22,16 @@ __all__ = ('LLambda',)
class LLambda(Linked):
value: Linked
def __new__(cls, name: bytes, value: Linked):
return Linked.__new__(LLambda) if name in value.future else LDelayed(value)
def __init__(self, name: bytes, value: Linked):
self.name = name
self.value = value
self.future = self.value.future - {name}
self.multifuture = self.future
self.used = name in value.future
self.memoize = name in value.multifuture
self.future = self.value.future - {name}
self.multifuture = self.future if self.used else self.value.multifuture
def attach(self, env: elvtype) -> Evaluable:
return (

View File

@ -3,8 +3,8 @@
from bu4.evaluation.constructs.evaluable import Evaluable
from bu4.indexing.constructs.iname import IName
from bu4.indexing.constructs.indexed import Indexed
from bu4.linkable.evaluation.elvtype import elvtype
from bu4.linking.constructs.linked import Linked
from bu4.linking.evaluation.elvtype import elvtype
from bu4.transform.states.transformfinished import TransformFinished
from bu4.transform.states.transformstate import TransformState

View File

@ -4,8 +4,8 @@ from bu4.evaluation.constructs.enull import ENull
from bu4.evaluation.constructs.evaluable import Evaluable
from bu4.indexing.constructs.indexed import Indexed
from bu4.indexing.constructs.inull import INull
from bu4.linkable.evaluation.elvtype import elvtype
from bu4.linking.constructs.linked import Linked
from bu4.linking.evaluation.elvtype import elvtype
from bu4.transform.states.transformfinished import TransformFinished
from bu4.transform.states.transformstate import TransformState

View File

@ -2,7 +2,7 @@
from bu4.evaluation.constructs.eattachable import EAttachable
from bu4.linkable.constructs.parsed import Parsed
from bu4.linkable.evaluation.elvtype import elvtype
from bu4.linking.evaluation.elvtype import elvtype
from bu4.transform.transform import transform
__all__ = ('evaluable_from_parsed',)

View File

@ -3,9 +3,9 @@
from bu4.evaluation.constructs.eattachable import EAttachable
from bu4.evaluation.constructs.evaluable import Evaluable
from bu4.evaluation.constructs.evalue import EValue
from bu4.linkable.evaluation.elvtype import elvtype
from bu4.linkable.evaluation.lambdaelv import LambdaElv
from bu4.linking.constructs.linked import Linked
from bu4.linking.evaluation.elvtype import elvtype
from bu4.linking.evaluation.lambdaelv import LambdaElv
__all__ = ('ELLambda',)

View File

@ -4,7 +4,7 @@ from typing import Mapping, Iterator
from bu4.evaluation.constructs.evaluable import Evaluable
from bu4.evaluation.targets.avnamedcontainer import AVNamedContainer
from bu4.linkable.evaluation.elvtype import elvtype
from bu4.linking.evaluation.elvtype import elvtype
__all__ = ('LambdaElv',)

View File

@ -7,7 +7,7 @@ from bu4.evaluation.constructs.edelayed import EDelayed
from bu4.evaluation.constructs.evalue import EValue
from bu4.evaluation.sync import sync
from bu4.indexing.evaluation.eilambda import EILambda
from bu4.linkable.evaluation.ellambda import ELLambda
from bu4.linking.evaluation.ellambda import ELLambda
from bu4.tracing.probe import Probe
__all__ = ('trace', 'probe_index_reset',)