diff --git a/compiler/erg_compiler/lib/pystd/collections.d/__init__.d.er b/compiler/erg_compiler/lib/pystd/collections.d/__init__.d.er new file mode 100644 index 00000000..ab95ad88 --- /dev/null +++ b/compiler/erg_compiler/lib/pystd/collections.d/__init__.d.er @@ -0,0 +1,11 @@ +.abc = pyimport "abc" + +.NamedTuple = 'namedtuple': ClassType +.Deque = 'deque': ClassType +.ChainMap: ClassType +.Counter: ClassType +.OrderedDict: ClassType +.Defaultdict = 'defaultDict': ClassType +.UserDict: ClassType +.UserList: ClassType +.UserString: ClassType diff --git a/compiler/erg_compiler/lib/pystd/collections.d/abc.d.er b/compiler/erg_compiler/lib/pystd/collections.d/abc.d.er new file mode 100644 index 00000000..309d73c1 --- /dev/null +++ b/compiler/erg_compiler/lib/pystd/collections.d/abc.d.er @@ -0,0 +1,13 @@ +.Container = Trait { .__contains__ = (self: Self) -> Bool } +.Hashable = Trait { .__hash__ = (self: Self) -> Nat } +.Sized = Trait { .__len__ = (self: Self) -> Nat } +# TODO: varargs +.Callable = Trait { .__call__ = (self: Self) -> Obj } +# .Iterable T = Trait { .__iter__ = (self: Self) -> Iterator T } +.Iterable = Trait { .__iter__ = (self: Self) -> .Iterator } +.Collection = Subsume .Container and .Iterable +# .Iterator T = Trait { .__next__ = (self: Self) -> T } +.Iterator = Trait { .__next__ = (self: Self) -> Obj } +.Reversible = Trait { .__reversed__ = (self: Self) -> .Iterator } +.Genertor = Subsume .Iterator +.Sequence = Subsume .Collection and .Sized and .Reversible