mojo
mojo copied to clipboard
[Feature Request] Parametrize ```__is__``` dunder
Review Mojo's priorities
- [X] I have read the roadmap and priorities and I believe this request falls within the priorities.
What is your request?
Hello,
that feature improved __getitem__
by letting take indexes as parameters (Variant[Int,Bool](1)[Int]
),
__is__
might get an improvement by it too, here are some examples:
Example for variant:
struct Variant[*Ts:CollectionElement]():
fn __is__[
other: CollectionElement
](self)->Bool:
return self.isa[other]()
fn main():
var x = Variant[Int,Bool](1)
if x is Int: print(x[Int])
if x is Bool: print(x[Bool])
And for PythonObject:
x = PythonObject(1)
if x is Int: print(int(x))
#if x is List
#if x is Tuple
What is your motivation for this change?
Variant is a nice type that can seem weird for python users, this could make it more user-friendly.
it could also ameliorate any user-created structs in a super user-friendly manner.
Any other details?
No response
In Python, the operator is
allows the programmer to check the identity of an object, in other words, it allows someone to check that two objects have the same address in memory. While this proposal will make the Variant
struct have a nicer api, it may conflict in the future when is
will be used to check the memory addresses of references.
Maybe let's hold on to this syntax sugar until we know how is
will be used exactly with references?
As Gabriel mentioned, moving to "Postponed" for now until things are further along with references, memory identity, etc.