mojo icon indicating copy to clipboard operation
mojo copied to clipboard

[Feature Request] Parametrize ```__is__``` dunder

Open rd4com opened this issue 9 months ago • 1 comments

Review Mojo's 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

rd4com avatar May 10 '24 08:05 rd4com

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?

gabrieldemarmiesse avatar May 10 '24 12:05 gabrieldemarmiesse

As Gabriel mentioned, moving to "Postponed" for now until things are further along with references, memory identity, etc.

JoeLoser avatar Jul 17 '24 22:07 JoeLoser