Racket Cheat Sheet
Essentials
Primitives
Data
Systems
Syntax (Beginner)
Syntax (Intermediate)
Syntactic Abstractions
Tools
8.5

Racket Cheat Sheet

Jay McCarthy

Essentials
Sitesmain download docs git
Communitypackages users@ dev@ irc slack twitter
RunningPut #lang racket "Hello, world!" in hello.rkt and run racket hello.rkt
Primitives

Numbers

Literalsinteger 1 rational  1/2  complex 1+2i floating 3.14 double 6.02e+23 hex #x29 octal #o32 binary #b010101
Arithmetic+ - * / quotient remainder modulo add1 sub1 max min round floor ceiling sqrt expt exp log sin ... atan
Compare= < <= > >=
Bitwisebitwise-ior bitwise-and bitwise-xor bitwise-not arithmetic-shift integer-length
Formatnumber->string string->number real->decimal-string
Testnumber? complex? ... exact-nonnegative-integer? ... zero? positive? negative? even? odd? exact? inexact?
Miscrandom
Match Pattern(? number? n) 42
Systems
Syntax (Beginner)

Basics

Modules(module+ main body ...)
(module+ test body ...)
(require mod-path) (provide id)
S-expressionsquote '(a b c) quasiquote unquote `(1 2 ,(+ 1 2))
Procedure Applications(fn arg1 arg2)
keyword args (fn arg1 #:key arg2)
(apply fn arg1 (list arg2))
Procedures(lambda (x) x) (λ (x) x)
(λ (x [opt 1]) (+ x opt))
(λ (x #:req key) (+ x key))
(λ (x #:opt [key 1]) (+ x key))
Binding(let ([x 1] [y 2]) (+ x y))
(let* ([x 1] [x (+ x 1)]) x)
Conditionals(if (zero? x) 0 (/ 1 x))
(cond [(even? x) 0] [(odd? x) 1]
      [else "impossible!"])
and or
Definitions(define x 1)
(define (f y) (+ x y))
Iterationfor for/list for*
Blocksbegin when unless
Require Sub-formsprefix-in only-in except-in rename-in for-syntax for-label ...
Provide Sub-formsall-defined-out all-from-out rename-out ... contract-out

Structures

Definition(struct dillo (weight color))
Create(define danny (dillo 17.5 'purple))
Observe(dillo? danny) (dillo-weight danny) (dillo-color danny)
Modify(struct-copy dillo danny ([weight 18.0]))
Match Pattern(dillo w c)

Pattern Matching

Basics(match value [pat body] ...)
Definitions(match-define pat value)
Patterns(quote datum) (list lvp ...) (list-no-order pat ...) (vector lvp ...) (struct-id pat ...) (regexp rx-expr pat) (or pat ...) (and pat ...) (? expr pat ...)
Syntax (Intermediate)

Structures

Sub-structures(struct 2d (x y)) (struct 3d 2d (z)) (2d-x (3d 1 2 3))
Mutation(struct monster (type [hp #:mutable])) (define healie (monster 'slime 10)) (set-monster-hp! healie 0)
Transparency(struct cash ($ ¢) #:transparent) (struct->vector (cash 5 95))
Printing(struct nickname [n v] #:methods gen:custom-write [(define (write-proc nn p mode) (fprintf p (nickname-n nn)))]) (displayln (nickname "evens" (in-range 0 100 2)))
Serialization(struct txn (who what where) #:prefab) (write (txn "Mustard" "Spatula" "Observatory"))

Generics

Definitiondefine-generics
Instantiation(struct even-set () #:methods gen:set [(define (set-member? st i) (even? i))])
Tools

Packages

Inspectionraco pkg show
Findingpkgs.racket-lang.org
Installingraco pkg install
Updatingraco pkg update
Removingraco pkg remove

Miscellaneous

Compilingraco make program.rkt
Testingraco test program.rkt a-directory
Building Executablesraco exe program.rkt
Extending DrRacketdrracket:language:simple-module-based-language->module-based-language-mixin
Slidesslide standard-fish code