2. Exponentiation implementation depends on the size of the power. For very small powers normally they are represented as their reciprocal, then operated on within the exponent.
y = b ** (1/x)
for very large x is rewritten as y = Math.exp(Math.log(b) / x)
I recently learned the syntax for half-open intervals. It's so frustrating that I can't bear to type it out. This is relevant: https://xkcd.com/859/
Of particular note is that the JS arrow function becomes a real arrow ⇒, which is nicer than the operator-ish rendering of equals and a greater than sign. Other quality of life improvements are reshaping ripples of characters to be clearer, such as a reshape to www and **. Triple bar equals is nice too given the differences in JS.
On the other hand, people experienced in mathematics find silly to use a whole bunch of arbitrary composed symbols to replace the traditional mathematics symbols, some of which have been used for centuries, only because a half of century ago the ASCII character set standardized by Americans, for which the priority was its suitability for commercial correspondence written in English, not for mathematical formulae or programming languages, and previously the even more restricted character sets implemented by the IBM peripherals, have forced the designers of programming languages to substitute the classic mathematical symbols with whatever was available.
Now when Unicode is available, it is possible to design a new programming language that uses any desirable symbols.
However the most important legacy programming languages are still specified to use only ASCII, with the possible exception of identifiers. Ligatures allow one to see whatever symbols are preferred, while still delivering to the compiler ASCII text.
This tradition of using very restricted character sets has been imposed on the world by USA, and especially by IBM, to reduce their manufacturing costs in the early years of computer technology. Its consequences have been both the difficulties of using in computer applications the letters with diacritics that are essential for most non-English languages and also of writing mathematical formulae.
In the beginning, the programming languages partially or totally designed in Europe, like ALGOL 60 or CPL, were using much more mathematical symbols than available in the American computers. Because of this, eventually they had to be transliterated in order to be able to make compilers for them that could run on IBM computers or the like.
I use a plug in for vscode that does all sort of substitutions along with ligature.
E.g.
(reduce + [1 2 3])
Shows as (Σ + 123)
Or (comp foo bar quax)
Becomes (∘ foo bar quax)
Etc, I find the conciseness so much easier to read.Unfortunately the plugin can be buggy when you hsbe a lot if subs, I'd setup loads if I could. If only someone would fix it / make a version that works.
Mono Lisa strikes a nice balance. If you want a free version, I think JetBrains Mono is decent too