Smalc
Smalc is a joke calculator (created to be better than Desmos) implemented as a project to learn Elixir. Created by User:Joe
Spec
Literals
There are no number literals in the calculator, only identifiers. If an identifier can't be found in the context, it's then treated as a base 16 number. The language was implemented this way so you could redefine the values of numbers.
Operators
What the math operators correspond to in Smalc: All operators are right-associative as well.
| Operator | Type | Symbol | Precedence | 
|---|---|---|---|
+
 | 
prefix | min
 | 
60 | 
-
 | 
infix | max
 | 
70 | 
*
 | 
postfix | +
 | 
50 | 
/
 | 
infix | -
 | 
40 | 
pow
 | 
mixfix (a S b c)
 | 
extrema
 | 
30 | 
mod
 | 
prefix | @
 | 
80 | 
sqrt
 | 
postfix | sin
 | 
NONE | 
Preprocessor
Before the program is interpreted, every [ in the text is replaced with ((( and every ] is replaced with )).
Brackets
Expressions can be bracketed with mismatching (, ), [, ], {, }. But because of the way they're implemented in the parser, you can't nest bracketed expressions lol. 
Variables
Variables are defined as such:
: expr ident : expr
Identifiers are any sequence of alphanumeric characters.
When accessing a variables, you reverse the name. A variable defined as PI would be accessed as IP.
Examples
(((1400 * 1000000) / 1) - 16) + 4000000
is equivalent to
min {578 F4240 + - 1) max 10 3D0900
in Smalc.