Quick reference logo guide:
Stuff should work in lower or upper case.
Types:
WORDS: FW BW ....
NUMBERS: 0, 0.1, 20
LISTS: [1 2 3 5]
SYMBOLS: "foo "bar
VARIABLES: :foo :bar
FUNCTION CALLS: COMMAND arg arg arg ...
(COMMAND arg arg arg ...)
Supported Commands:
RESET Clear the screen, move home.
Turtle Movement:
FORWARD n Move the turtle forward n pixels
FW n
BACKWARD n Move the turtle backward n pixels
RIGHT n Move the turtle left or right n degrees
RT n
LEFT n
LT n
SETX x Set the co-ordinates of the turtle
SETY y
SETXY x y
HOME Move the turtle to the home position
Drawing:
CLEARSCREEN Clear the screen
CLEAR
CS
CIRCLE r Draw a Circle of radius r around the turtle
ARC r d Draw an arc of radius r for d degrees
PENUP Lift the pen up and down
PU
PENDOWN
PD
COLOR [r g b] Set the pen color
PENWIDTH w Set the pen width
Text:
PRINT "foo Prints "foo"
PR "foo
PRINT ["foo "bar] Prints "foo bar"
PR ["foo "bar]
CLEARTEXT Clears previously printed text
CT
Arithmetic:
1 + 2 1 * 2
SUM 1 2 PRODUCT 1 2
(SUM 1 2 3 ...) (PRODUCT 1 2 3 ...)
1 - 2 1 / 2
DIFFERENCE 1 2 DIVIDE 1 2
1 % 2
MOD 1 2
RANDOM n Return a integer in [0,n)
RAND n
RERANDOM s Set the random seed value
SRAND s
INT n
ROUND n
POWER e m
EXP n
LN n
LOG10 n
SIN, COS
RADSIN,RADCOS
ARCTAN
RADARCTAN
List Operators (experimental):
These functions may break silently at the moment.
FIRST, HEAD Return the first item in a list
BUTFIRST, TAIL Return the everything but the first item in a list
LAST Return the last item in a list
BUTLAST Return everything but the last item in a list
FPUT item list Return a new list with item at the front
LPUT item list Return a new list with item at the back
ITEM index list Retrieve the indexed item
SETITEM index list value Set the indexed item
EMPTY? list Return true if list is empty
EMPTYP list
Logical and Comparison:
1 = 1
EQUAL? 1 1
EQUALP 1 1
1 < 2 1 <= 2
LESS? 1 2 LESSEQUAL? 1 2
LESSP 1 2 LESSEQUALP 1 2
2 > 1 2 > 1
GREATER? 2 1 GREATEREQUAL? 2 1
GREATERP 2 1 GREATEREQUALP 2 1
AND TRUE FALSE OR FALSE TRUE
Conditionals:
IF COND [IF_TRUE]
IF 2 > 1 [FW 100]
IFELSE COND [IF_TRUE] [IF_FALSE]
IFELSE 2 > 1 [FW 100 RT 90] [BW 100 LT 90]
Setting and getting:
Set x to 1: make "x 1
Adding :n to :x :n + :x
Setting :x to :n + :x make "x :x + :n
Looping:
REPEAT n [COMMANDS ...]
STOP - Stop the current Repeat or function.
OUTPUT f - Return f.
OP f
Defining and Calling:
TO FOO :ARG1 :ARG2 BODY END
TO SQUARE :length
REPEAT 4 [FW :length RT 90]
END
SQUARE :10
TO POLYGON :length :sides
REPEAT :sides [FW :length RT 360/:sides]
END
POLYGON 5 10
Note: Simple Tail recursion is supported.