But it can’t be done, in general (in most cases, yes, for operators), because it’s not true. You can’t change to ASCII operator form, always, but you can change Unicode operators to method calls, aka functions (likely except to exotic “custom infix operators”), when that’s not possible. Just changing to operators would be an easier transformation, and it would practical if you allow some exceptions.
For users own functions, they could define confusingly different functions, and with your proposal even more confusing for the blind, since then a totally invisible difference:
julia> α(x) = ...
julia> alpha(x) = ...
It’s not advised, and I rarely if ever see Unicode for function names, at least much more for variables. It’s very plausible this could happen with a Unicode version being defined in one package dependency and the ASCII version, for different purposes, in another package, so it would be dangerous to allow blind people to see the same, when they are not (could be a non-default option to do that…, as this should likely never happen in practice?).
There are two exceptions for the built-in operators:
a ⊻ b
, doesn’t have an equivalent, only a function form xor(a, b)
and a ÷ b
has div(a, b)
(not to be confused with a / b
, the most common division form, giving a floating point number, as opposed to an integer for the former).
Plus most problematic (but I see rarely if ever used) Julia allows: https://github.com/JuliaLang/julia/blob/master/HISTORY.md
Custom infix operators can now be defined by appending Unicode combining marks, primes, and sub/superscripts to other operators. For example, +̂ₐ″ is parsed as an infix operator with the same precedence as + (#22089).
some more to be aware of (potentially difficult for Bralle, didn’t look into if ᵀ, as opposed to T, is well supported with Braille):
The postfix conjugate transpose operator ’ now accepts Unicode modifiers as suffixes, so e.g. a’ᵀ is parsed as var"‘ᵀ"(a), which can be defined by the user. a’ᵀ parsed as a’ * ᵀ before, so this is a minor breaking change (#37247).
I’m not sure this is super helpful, even for the seeing, for Braille purposes could be changed to regular numbers it seems:
Support for unicode bold digits and double-struck digits 0 through 9 as valid identifiers (#32838).
And that’s the current use of Braille patterns in Julia:
Display large sparse matrices with a Unicode “spy” plot of their nonzero patterns, and display small sparse matrices by an Matrix-like 2d layout of their contents (#33821).