Allowing the object.method(args...) syntax as an alias for method(object, args ...)

The main benefits to UFCS, IMO, have nothing to do with the object oriented paradigm. It’s just nice syntax that allows for noun→verb ordering, without being as limited as the pipe |>. Equating UFCS with OOP is a mistake imo. See this post:

I’m not convinced that’s necessary. Encapsulation isn’t needed frequently, and an anonymous function can be explicitly defined when it is.

Use of . should be limited to property getting. Keep it simple.

Macbooks are pretty powerful these days… I guess we’ll see. Likely more performant than my brain anyway.

Not convinced. I prefer + for string concatenation and * for string replication, but Julia uses * and ^ respectively. It’s not the end of the world.

But also, it’s a beneficial reminder to OOP programmers that this isn’t an OOP concept; we are calling a globally accessible method with the object as the first argument, *not* calling a method that “belongs” to the object. Hence why syntax other than . is good, to disambiguate for the compiler and also for the person between property getting and method calling.

But please, characters that are easy to type without errors. |> is such an error-prone sequence of characters.

That’s why I was proposing .. to disambiguate from property getting. Or perhaps --.

Yes, there are about half a dozen packages that solve the same problem in slightly different ways, so we’re unlikely to have a standard anytime soon unless it’s incorporated into the language.

Oh. Oh my. Oh my oh my. I just learned about Julia’s new destructuring syntax. :clap: :clap: :clap:

(; prop1, prop2, prop3) = my_object # prop1 == my_object.prop1, etc.

Game. Changer. Sí se puede.

Strangely it doesn’t seem to work for destructuring modules… that seems like a bug (considering that my destructuring code above does work on modules, and supposedly they work on the same methods).

If it worked, @jlapeyre could write:

let (; x, y, z) = QCircuit
    add!(circ, x, 1)
end

Wonderful syntax :pinched_fingers:

1 Like