Proposal in #4 turns out to be difficult to implement due to
Support #5 cannot be efficient in current framework because the use of non-constant tuple cannot get eliminated.
As a consequence, self.f(*self.free, *args) will have to redundantly concat 2 tuples(self.free, args), because our IR is transformed from python bytecode and BUILD_TUPLE_UNPACK_WITH_CALL will produce the tuple concat semantics.
User-defined types cannot hold typed members so far due to the obstacle to infer immutability and member types.
class S:
__slots__ = ['a', 'b']
def __init__(self, a, b):
self.a = a
self.b = b
It's difficult to make a parameteric type S[int, int] from python expression S(1, 2), due to side-effect powered __init__ and that the initialization is expressed with self.* = *.
Proposal in #4 turns out to be difficult to implement due to
Support #5 cannot be efficient in current framework because the use of non-constant tuple cannot get eliminated.
As a consequence,
self.f(*self.free, *args)
will have to redundantly concat 2 tuples(self.free
,args
), because our IR is transformed from python bytecode andBUILD_TUPLE_UNPACK_WITH_CALL
will produce the tuple concat semantics.User-defined types cannot hold typed members so far due to the obstacle to infer immutability and member types.
It's difficult to make a parameteric type
S[int, int]
from python expressionS(1, 2)
, due to side-effect powered__init__
and that the initialization is expressed withself.* = *
.