@leonandonayre Your example fails because of precedence of the + operator. You can run your function by calling (++)(1, 2). For why the OP can’t even define **, maybe someone else can answer.
My guess was that this was to help guide Python users to the correct syntax in Julia, and after digging through the git history it turns out I was right:
See https://github.com/JuliaLang/julia/pull/39089. We just didn’t really come up with a convincing enough use case at the time. If you have a concrete use for this, feel free to chime in on the discussion there.
Note that emoji like :dizzy: and :eight_spoked_asterisk: are in Unicode category So (Symbol, other) and are typically not parsed as infix operators by Julia.
That being said, there are plenty of infix operators to choose from. My visual favorite is ⨳ (\smashtimes).
Another thing you’re allowed to do is stick unicode modifiers on infix operators to make new operators with the same precence. For example:
julia> *̂(a,b) = a + b
*̂ (generic function with 1 method)
julia> 1 *̂ 2
3
julia> *²(a, b) = (a * b)^2
*² (generic function with 1 method)
julia> 2 *² 3
36