François Pinard's site

Scheme summary





1   R5RS Expressions

1.1   Primitive expression types

Variable references

  • <variable>

Literal expressions

  • (quote <datum>)
  • '<datum>
  • <constant>

Procedure calls

  • (<operator> <operand1> …)

Procedures

  • (lambda <formals> <body>)

Conditionals

  • (if <test> <consequent> <alternate>)
  • (if <test> <consequent>)

Assignments

  • (set! <variable> <expression>)

1.2   Derived expression types

Conditionals

  • (cond <clause1> <clause2> …)
  • (case <key> <clause1> <clause2> …)
  • (and <test1> …)
  • (or <test1> …)

Binding constructs

  • (let <bindings> <body>)
  • (let* <bindings> <body>)
  • (letrec <bindings> <body>)

Sequencing

  • (begin <expression1> <expression2> …)

Iteration

  • (do ((<variable1> <init1> <step1>) …) (<test> <expression> …) <command> …)
  • (let <variable> <bindings> <body>)

Delayed evaluation

  • (delay <expression>)

Quasiquotation

  • (quasiquote <qq template>)
  • `<qq template>

Macros

Binding constructs for syntactic keywords

  • (let-syntax <bindings> <body>)
  • (letrec-syntax <bindings> <body>)

Syntax definitions

  • (define-syntax <keyword> <transformer spec>)

2   R5RS Procedures

2.1   Equivalence predicates

Link

  • (eqv? obj1 obj2)
  • (eq? obj1 obj2)
  • (equal? obj1 obj2)

2.2   Numbers

Numerical operations

  • (number? obj)
  • (complex? obj)
  • (real? obj)
  • (rational? obj)
  • (integer? obj)
  • (exact? z)
  • (inexact? z)
  • (= z1 z2 z3 …)
  • (< x1 x2 x3 …)
  • (> x1 x2 x3 …)
  • (<= x1 x2 x3 …)
  • (>= x1 x2 x3 …)
  • (zero? z)
  • (positive? x)
  • (negative? x)
  • (odd? n)
  • (even? n)
  • (max x1 x2 …)
  • (min x1 x2 …)
  • (+ z1 …)
  • (* z1 …)
  • (- z1 z2)
  • (- z)
  • (- z1 z2 …)
  • (/ z1 z2)
  • (/ z)
  • (/ z1 z2 …)
  • (abs x)
  • (quotient n1 n2)
  • (remainder n1 n2)
  • (modulo n1 n2)
  • (gcd n1 …)
  • (lcm n1 …)
  • (numerator q)
  • (denominator q)
  • (floor x)
  • (ceiling x)
  • (truncate x)
  • (round x)
  • (rationalize x y)
  • (exp z)
  • (log z)
  • (sin z)
  • (cos z)
  • (tan z)
  • (asin z)
  • (acos z)
  • (atan z)
  • (atan y x)
  • (sqrt z)
  • (expt z1 z2)
  • (make-rectangular x1 x2)
  • (make-polar x3 x4)
  • (real-part z)
  • (imag-part z)
  • (magnitude z)
  • (angle z)
  • (exact->inexact z)
  • (inexact->exact z)

Numerical input and output

  • (number->string z)
  • (number->string z radix)
  • (string->number string)
  • (string->number string radix)

2.3   Other data types

Booleans

  • (not obj)
  • (boolean? obj)

Pairs and lists

  • (pair? obj)
  • (cons obj1 obj2)
  • (car pair)
  • (cdr pair)
  • (set-car! pair obj)
  • (set-cdr! pair obj)
  • (c[ad][ad]r pair)
  • (c[ad][ad][ad]r pair)
  • (c[ad][ad][ad][ad]r pair)
  • (null? obj)
  • (list? obj)
  • (list obj …)
  • (length list)
  • (append list …)
  • (reverse list)
  • (list-tail list k)
  • (list-ref list k)
  • (memq obj list)
  • (memv obj list)
  • (member obj list)
  • (assq obj alist)
  • (assv obj alist)
  • (assoc obj alist)

Symbols

  • (symbol? obj)
  • (symbol->string symbol)
  • (string->symbol string)

Characters

  • (char? obj)
  • (char=? char1 char2)
  • (char<? char1 char2)
  • (char>? char1 char2)
  • (char<=? char1 char2)
  • (char>=? char1 char2)
  • (char-ci=? char1 char2)
  • (char-ci<? char1 char2)
  • (char-ci>? char1 char2)
  • (char-ci<=? char1 char2)
  • (char-ci>=? char1 char2)
  • (char-alphabetic? char)
  • (char-numeric? char)
  • (char-whitespace? char)
  • (char-upper-case? letter)
  • (char-lower-case? letter)
  • (char->integer char)
  • (integer->char n)
  • (char-upcase char)
  • (char-downcase char)

Strings

  • (string? obj)
  • (make-string k)
  • (make-string k char)
  • (string char …)
  • (string-length string)
  • (string-ref string k)
  • (string-set! string k char)
  • (string=? string1 string2)
  • (string-ci=? string1 string2)
  • (string<? string1 string2)
  • (string>? string1 string2)
  • (string<=? string1 string2)
  • (string>=? string1 string2)
  • (string-ci<? string1 string2)
  • (string-ci>? string1 string2)
  • (string-ci<=? string1 string2)
  • (string-ci>=? string1 string2)
  • (substring string start end)
  • (string-append string …)
  • (string->list string)
  • (list->string list)
  • (string-copy string)
  • (string-fill! string char)

Vectors

  • (vector? obj)
  • (make-vector k)
  • (make-vector k fill)
  • (vector obj …)
  • (vector-length vector)
  • (vector-ref vector k)
  • (vector-set! vector k obj)
  • (vector->list vector)
  • (list->vector list)
  • (vector-fill! vector fill)

2.4   Control features

Link

  • (procedure? obj)
  • (apply proc arg1 … args)
  • (map proc list1 list2 …)
  • (for-each proc list1 list2 …)
  • (force promise)
  • (call-with-current-continuation proc)
  • (values obj …)
  • (call-with-values producer consumer)
  • (dynamic-wind before thunk after)

Eval

Link

  • (eval expression environment-specifier)
  • (scheme-report-environment version)
  • (null-environment version)
  • (interaction-environment)

Input and output

Ports

  • (call-with-input-file string proc)
  • (call-with-output-file string proc)
  • (input-port? obj)
  • (output-port? obj)
  • (current-input-port)
  • (current-output-port)
  • (with-input-from-file string thunk)
  • (with-output-to-file string thunk)
  • (open-input-file filename)
  • (open-output-file filename)
  • (close-input-port port)
  • (close-output-port port)

Input

  • (read)
  • (read port)
  • (read-char)
  • (read-char port)
  • (peek-char)
  • (peek-char port)
  • (eof-object? obj)
  • (char-ready?)
  • (char-ready? port)

Output

  • (write obj)
  • (write obj port)
  • (display obj)
  • (display obj port)
  • (newline)
  • (newline port)
  • (write-char char)
  • (write-char char port)

System interface

  • (load filename)
  • (transcript-on filename)
  • (transcript-off)