TIO refers to Try it online! while ATO refers to Attempt This Online!.

Used by Wolfram expressions.

Logical And(any, any). Returns the LHS unless it is falsy, in which case it evaluates the RHS.

Logical Or(any, any). Returns the LHS if it is falsy, otherwise it evaluates the RHS.

Starts a compressed string, which is a single token.

Starts a literal string (a string containing these command characters, excluding , or ⸿). (TIO: or ⸿ will also be quoted, but the deverbosifier erroneously converts \n or \r.)

Ends a compressed or literal string. (A terminating string does not require the end delimiter.)

Push(list, any);. Appends the value to the list.

PushOperator(list, any). Appends the value to the list and returns the list.

Pop(list). Removes and returns the last element of the list.

Used by Wolfram expressions.

Used by Wolfram expressions.

Used by Wolfram expressions.

\n. Literal newline character; counts as part of an ASCII string literal. When printed to the canvas, causes the cursor to move to the start of the next "line" below the cursor position at the start of the print command.

Used by Wolfram expressions.

PivotLeft(int=2);. Rotates the pivot anticlockwise by 45° times the argument.

PivotRight(int=2);. Rotates the pivot clockwise by 45° times the argument.

Rotate(int=2);. Rotates the canvas anticlockwise by 45° times the argument.

RotateTransform(int=2);. Rotates the canvas anticlockwise by 45° times the argument, rotating the characters if possible.

As RotateCopy but rotates the characters if possible.

As RotateCopy but rotates around the character in the corner (so that the rotated character overlaps itself).

As RotateOverlap but specifies the amount of overlap.

As RotateOverlap but rotates the characters if possible.

As RotateShutter but specifies the amount of overlap.

Also used as a direction parameter to other commands.

Also used as a direction parameter to other commands.

Also used as a direction parameter to other commands.

Also used as a direction parameter to other commands.

Also used as a direction parameter to other commands.

Also used as a direction parameter to other commands.

Also used as a direction parameter to other commands.

Also used as a direction parameter to other commands.

Used by Wolfram expressions.

Join(any, iter). Converts the first argument and the elements of the second argument to string and joins the latter using the former.

PadLeft(str, int). Pads the first argument with spaces if its length is less than the second argument.

PadRight(str, int). Pads the first argument with spaces if its length is less than the second argument.

switch (any) { case:s... (default:) }

Like switch but uses a closing » to mark the end of the switch statement. (Technically the closing » is optional at the end of the program but in that case you would simply omit the «.) (Not available on TIO.)

\r. Literal carriage return character; counts as part of an ASCII string literal. When printed to the canvas, causes the cursor to move to the start of the next line.

Assign(any, var);.

GetVariable(str). Gets a Charcoal variable indirectly by succinct name or a Python constant such as math.tau.

ExecuteVariable(str, list);. Executes the named Python function, passing it the given arguments.

Directions(list). Represents a computed multidirectional given by the elements of the list as individual direction arrows.

Clear();. Clears the canvas and moves the cursor to the origin, but does not change other settings such as the pivot direction.

Not(any). Returns 1 if the value is falsy, 0 otherwise.

SquareRoot(number).

AtIndex(iter, int). Cyclically indexes into the iterable.

AssignAtIndex(list, int, any);. Updates an element of a dictionary, or of a list (including a list of cells) using cyclic indexing.

Begins a block or a lambda. The block does not need to be closed at the end of the program.

Ends a block or lambda.

Used as the decimal point in a floating-point literal.

Used to create integer and floating-point literals.

Used to separate consecutive integers or strings or as placeholders for optional arguments.

Reflect(dir=→);. Reflects the canvas in the specified direction.

ReflectTransform(dir=→);. Reflects the canvas in the specified direction, reflecting the characters if possible.

ReflectCopy(dirs=→);. Reflects the canvas in each specified direction in turn, adding the reflected copy to the canvas after each reflection.

ReflectMirror(dirs=→);. As ReflectCopy but reflecting the characters if possible.

ReflectOverlap(dirs=→);. As ReflectOverlap but reflects around the edge characters (so that the reflected axis overlaps itself).

ReflectButterfly(dirs=→);. As ReflectOverlap but reflecting the characters if possible.

ReflectOverlapOverlap(dirs=→, num);. As ReflectOverlap but specifies the amount of overlap.

ReflectButterflyOverlap(dirs=→, num);. As ReflectOverlapOverlap but reflecting the characters if possible.

Equals(any, any).

Note that the first form is only possible at the end of a block or program.

PeekAll(). Returns a list of all the non-background cells in the canvas. Cells can be assigned to using AssignAtIndex.

ReflectButterfly(dirs=→);. As ReflectOverlap but reflecting the characters if possible.

ReflectButterflyOverlap(dirs=→, num);. As ReflectOverlapOverlap but reflecting the characters if possible.

SetBackground(str);. Sets the string that should fill the background when the canvas is output. Defaults to a space.

Copy(int, int);. Overlays the canvas with a copy of it offset by the given horizontal and vertical amounts.

ReflectCopy(dirs=→);. Reflects the canvas in each specified direction in turn, adding the reflected copy to the canvas after each reflection.

Dump();. Outputs a copy of the canvas to standard output. Delays by 10ms since the last dump. (ATO: Use --nt to disable the delay.)

PeekDirection(int, dir). Returns a list of the cell under the cursor and continuing in the given direction up to the given length. Cells can be assigned to using AssignAtIndex.

RefreshFor(int, int). Loops over the integers from 0 up to the second argument, but displays the canvas at every step, with the given delay. RefreshFor(int, iter). Loops over the elements of the argument, but displays the canvas at every step, with the given delay.

See GH.

JumpTo(int, int);. Moves the cursor to the given absolute position.

PeekAll(). Returns a list of all the non-background cells in the canvas. Cells can be assigned to using AssignAtIndex.

PeekDirection(int, dir). Returns a list of the cell under the cursor and continuing in the given direction up to the given length. Cells can be assigned to using AssignAtIndex.

Peek(). Returns the character under the cursor.

PeekMoore(). Returns a list of the cells orthogonally and diagonally adjacent, starting with the cell above and to the left and working clockwise around the cursor. Cells can be assigned to using AssignAtIndex.

PeekVonNeumann(). Returns a list of the cells orthogonally adjacent, starting with the cell above and working clockwise around the cursor. Cells can be assigned to using AssignAtIndex.

Length(iter). Returns the length of the iterable.

MapCommand(iter, any);. Maps over the elements of the argument and updates the argument if possible. (Does not work for dictionaries on TIO.)

PushOperator(list, any). Appends the value to the list and returns the list.

Unused.

Refresh(int=0); Displays the canvas to the screen, but with an optional delay since the last refresh.

RefreshWhile(any) Loops while the argument is true, saving it in the next loop variable, but displays the canvas at every step, with the given delay. The argument is evaluated after the RefreshWhile loop variable is reserved.

Trim(int);. Removes any part of the canvas outside the square with the given size, but also any part of the canvas above or to the left of the origin. Trim(int, int);. Removes any part of the canvas outside the rectangle with the given size, but also any part of the canvas above or to the left of the origin.

RotateTransform(int=2);. Rotates the canvas anticlockwise by 45° times the argument, rotating the characters if possible.

ReflectTransform(dir=→);. Reflects the canvas in the specified direction, reflecting the characters if possible.

ToggleTrim();. Toggles whether the canvas output is right-padded (default true).

SetBackground(str);. Sets the string that should fill the background when the canvas is output. Defaults to a space.

MapCommand(iter, any);. Maps over the elements of the argument and updates the argument if possible. (Does not work for dictionaries on TIO.)

ToggleTrim();. Toggles whether the canvas output is right-padded (default true).

PythonEvaluate(). Evaluates the string as Python code.

PythonExecute(str). Executes the string as Python code.

PeekVonNeumann(). Returns a list of the cells orthogonally adjacent, starting with the cell above and working clockwise around the cursor. Cells can be assigned to using AssignAtIndex.

PythonEvaluate(). Evaluates the string as Python code.

while (any) Loops while the argument is true, saving it in the next loop variable. The argument is evaluated after the while loop variable is reserved.

RefreshWhile(any) Loops while the argument is true, saving it in the next loop variable, but displays the canvas at every step, with the given delay. The argument is evaluated after the RefreshWhile loop variable is reserved.

PythonExecute(str). Executes the string as Python code.

Unused.

Unused

Begins a list.

Ends a list. Optional at the end of the program.

Quotes a command character, allowing it to be used as part of a string literal.

Variables. αβχφγυωψ have predefined values. ικλμνξπρςστδεζηθ are used by loop variables, if possible. (Note that expression loops consume two variables, one for the value and one for the index.) θηζεδ attempt to retrieve the first five inputs, if not being used as loop variables.

Fill(str);. If the cursor is in an empty space, fills that space with the given string, repeating as needed.

Begins a dictionary.

Ends a dictionary. Optional at the end of the program.

BitwiseNot(int).