# Code --- Code is encoded as UTF-8, allowed glyphs are: ```text abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 `~!@#$%^&*()-_=+{}[]\|;:'"<>,.?/ \s\t\n ``` # Comments ```text // This is a comment until the end of the line /* Comment block */ ``` # Atoms ## Number Literals ```text 12 // Decimal ``` ##### Integer ```text 0x12 // Hex 0b10 // Binary 0o75 // Octal ``` ##### Float ```text 1.2 1e6 ``` Underscores `_` can separate digits in a number ```text 100_000 1.100_000 ``` ## String Literals ```text "Asdf\n" ``` Any UTF-8 glyph is allowed between `""` ```text Ω // Invalid code "Ω" // Valid code ``` ## Variable Names Start with a lowercase letter Variables starting with `_` are treated as unused ## Type Names Start with an uppercase letter created with either \`alias or \`unique # Operators Represented as an symbol or a keyword starting with \` ```text 1 + 2 1 `add 2 ``` # Symbols Start with a `.` ```test .symbol ``` # Lists A list of statements between `()` separated by `;` or `\n` ```text (1; 2; 3) ``` # Definitions A list of type definitions between `[]` separated by `;` or `\n` ```text Type[arg] ``` # Actions A list of statements between `{}` separated by `;` or `\n` associated with a conditional ## Conditionals #### Loop `@` ```text @ condition { statements } @ condition { statements }[args] @ condition { statements }[.name] @ condition { statements }[.name; args] ``` #### If `?` ```text ? condition { statements } ? { condition { statements } { default statements } } ? condition { arg; .... }[arg] ``` #### Match `#` ```text # match { target { statements } target { statements }[args] { default statements } } ``` #### Mutation `^` ```test ^ mutation { statements }[args] ```