# Base Library

The `(scheme base)` library exports many of the procedures and syntax bindings that are traditionally associated with Scheme.

For more information see the [R<sup>7</sup>RS Scheme Specification](../../r7rs.pdf).

- [`abs`](#abs)
- [`and`](#and)
- [`any`](#any)
- [`append`](#append)
- [`assoc`](#assoc)
- [`assq`](#assq)
- [`assv`](#assv)
- [`begin`](#begin)
- [`boolean=?`](#boolean)
- [`bytevector-copy`](#bytevector-copy)
- [`bytevector-copy!`](#bytevector-copy-1)
- [`call-with-current-continuation`](#call-with-current-continuation)
- [`call-with-port`](#call-with-port)
- [`call-with-values`](#call-with-values)
- [`call/cc`](#callcc)
- [`case`](#case)
- [`ceiling`](#ceiling)
- [`char<=?`](#char)
- [`char<?`](#char-1)
- [`char=?`](#char-2)
- [`char>=?`](#char-3)
- [`char>?`](#char-4)
- [`complex?`](#complex)
- [`cond`](#cond)
- [`cond-expand`](#cond-expand)
- [`current-error-port`](#current-error-port)
- [`current-input-port`](#current-input-port)
- [`current-output-port`](#current-output-port)
- [`define-record-type`](#define-record-type)
- [`denominator`](#denominator)
- [`do`](#do)
- [`dynamic-wind`](#dynamic-wind)
- [`eof-object`](#eof-object)
- [`error`](#error)
- [`even?`](#even)
- [`every`](#every)
- [`exact`](#exact)
- [`exact-integer?`](#exact-integer)
- [`exact?`](#exact)
- [`expt`](#expt)
- [`features`](#features)
- [`floor`](#floor)
- [`floor-quotient`](#floor-quotient)
- [`floor-remainder`](#floor-remainder)
- [`floor-remainder`](#floor-remainder )
- [`floor/`](#floor-1)
- [`flush-output-port`](#flush-output-port)
- [`foldl`](#foldl)
- [`foldr`](#foldr)
- [`for-each`](#for-each)
- [`gcd`](#gcd)
- [`get-output-bytevector`](#get-output-bytevector)
- [`get-output-string`](#get-output-string)
- [`guard`](#guard)
- [`inexact`](#inexact)
- [`inexact?`](#inexact-1)
- [`input-port-open?`](#input-port-open)
- [`input-port?`](#input-port)
- [`lcm`](#lcm)
- [`let`](#let)
- [`let*`](#let-1)
- [`let*-values`](#let-values)
- [`let-values`](#let-values-1)
- [`letrec`](#letrec)
- [`letrec*`](#letrec-1)
- [`list`](#list)
- [`list-copy`](#list-copy)
- [`list-ref`](#list-ref)
- [`list-set!`](#list-set)
- [`list-tail`](#list-tail)
- [`list?`](#list-1)
- [`make-constructor`](#make-constructor)
- [`make-getter`](#make-getter)
- [`make-list`](#make-list)
- [`make-parameter`](#make-parameter)
- [`make-setter`](#make-setter)
- [`make-string`](#make-string)
- [`make-type-predicate`](#make-type-predicate)
- [`map`](#map)
- [`max`](#max)
- [`member`](#member)
- [`memq`](#memq)
- [`memv`](#memv)
- [`min`](#min)
- [`modulo`](#modulo)
- [`negative?`](#negative)
- [`newline`](#newline)
- [`not`](#not)
- [`numerator`](#numerator)
- [`odd?`](#odd)
- [`open-input-bytevector`](#open-input-bytevector)
- [`open-input-string`](#open-input-string)
- [`open-output-bytevector`](#open-output-bytevector)
- [`open-output-string`](#open-output-string)
- [`or`](#or)
- [`output-port-open?`](#output-port-open)
- [`output-port?`](#output-port)
- [`parameterize`](#parameterize)
- [`positive?`](#positive)
- [`quasiquote`](#quasiquote)
- [`quotient`](#quotient)
- [`raise`](#raise)
- [`raise-continuable`](#raise-continuable)
- [`rational?`](#rational)
- [`read-line`](#read-line)
- [`read-string`](#read-string)
- [`receive`](#receive)
- [`record?`](#record)
- [`remainder`](#remainder)
- [`reverse`](#reverse)
- [`round`](#round)
- [`slot-set!`](#slot-set)
- [`square`](#square)
- [`string`](#string)
- [`string->list`](#string-list)
- [`string->utf8`](#string-utf8)
- [`string->vector`](#string-vector)
- [`string-copy`](#string-copy)
- [`string-copy!`](#string-copy-1)
- [`string-fill!`](#string-fill)
- [`string-for-each`](#string-for-each)
- [`string-map`](#string-map)
- [`string<=?`](#string-1)
- [`string<?`](#string-2)
- [`string=?`](#string-3)
- [`string>=?`](#string-4)
- [`string>?`](#string-5)
- [`symbol=?`](#symbol)
- [`syntax-error`](#syntax-error)
- [`truncate`](#truncate)
- [`truncate-quotient`](#truncate-quotient)
- [`truncate-remainder`](#truncate-remainder)
- [`truncate/`](#truncate-1)
- [`type-slot-offset`](#type-slot-offset)
- [`unless`](#unless)
- [`utf8->string`](#utf8-string)
- [`values`](#values)
- [`vector`](#vector)
- [`vector->list`](#vector-list)
- [`vector->string`](#vector-string)
- [`vector-append`](#vector-append)
- [`vector-copy`](#vector-copy)
- [`vector-copy!`](#vector-copy-1)
- [`vector-fill!`](#vector-fill)
- [`vector-for-each`](#vector-for-each)
- [`vector-map`](#vector-map)
- [`when`](#when)
- [`with-exception-handler`](#with-exception-handler)
- [`write-char`](#write-char)
- [`write-string`](#write-string)
- [`zero?`](#zero)


#abs
    (abs num)
#and
    (and {test1} ...)
#any
    (any pred lst)
#append
    (append list ...)
#assoc
    (assoc obj alist)
    (assoc obj alist compare)
#assq
    (assq obj alist)
#assv
    (assv obj alist)
#begin
    (begin {expression or definition} ...)
#boolean=?
    (boolean=? b1 b2 ...)
#bytevector-copy
    (bytevector-copy bytevector)
    (bytevector-copy bytevector start)
    (bytevector-copy bytevector start end)
#bytevector-copy!
    (bytevector-copy! to at from)
    (bytevector-copy! to at from start)
    (bytevector-copy! to at from start end)
#call-with-current-continuation
    (call-with-current-continuation proc)
#call-with-port
    (call-with-port port proc)
#call-with-values
    (call-with-values producer consumer)
#call/cc
    (call/cc proc)
#case
    (case {key} {clause1} {clause2} ...)
#ceiling
    (ceiling z)
#char<=?
    (char<=? c1 c2 c3 ...)
#char<?
    (char<?  c1 c2 c3 ...)
#char=?
    (char=?  c1 c2 c3 ...)
#char>=?
    (char>=? c1 c2 c3 ...)
#char>?
    (char>?  c1 c2 c3 ...)
#complex?
    (complex? obj) 
#cond
    (cond {clause1} {clause2} ...)
#cond-expand
    (cond-expand {ce-clause2} {ce-clause2} ...)
#current-error-port
    (current-error-port)
#current-input-port
    (current-input-port)
#current-output-port
    (current-output-port)
#define-record-type
    (define-record-type {name}
      {constructor} {pred} {field} ...)
#denominator
    (denominator n)
#do
    (do (({variable1} {init1} {step1})
         ...)
    ({test} {expression} ...)
    {command} ...)
#dynamic-wind
    (dynamic-wind before thunk after)
#eof-object
    (eof-object)
#error
    (error message obj ...)
#even?
    (even? num)
#every
    (every pred lst)
#exact
    (exact? num)
#exact-integer?
    (exact-integer? num)
#exact?
    (exact? num)
#expt
    (expt z1 z2)
#features
    (features) 
#floor
    (floor z)
#floor-quotient 
    (floor-quotient n m)
#floor-remainder
    (floor-remainder n m)
#floor/ 
    (floor/ n m)
#flush-output-port
    (flush-output-port)
    (flush-output-port port)
#foldl
    (foldl func accum lst)
#foldr
    (foldr func end lst)
#for-each
    (for-each proc list1 list2 ...)
#gcd
    (gcd n1 ...)
#get-output-bytevector
    (get-output-bytevector port)
#get-output-string
    (get-output-string port)
#guard
    (guard ({variable}
            {cond clause1} {cond clause2} ...)
      {body})
#inexact
    (inexact z)
#inexact?
    (inexact? num)
#input-port-open?
    (input-port-open? port)
#input-port?
    (input-port? port)
#lcm
    (lcm n1 ...)
#let
    (let {bindings} {body})
#let*
    (let* {bindings} {body})
#let*-values
    (let*-values {mv binding spec} {body})
#let-values
    (let-values {mv binding spec} {body})
#letrec
    (letrec {bindings} {body})
#letrec*
    (letrec* {bindings} {body})
#list
    (list obj ...)
#list-copy
    (list-copy lst)
#list-ref
    (list-ref lst k)
#list-set!
    (list-set! lst k obj)
#list-tail
    (list-tail lst k) 
#list?
    (list? o)
#make-constructor
    (make-constructor make name)
#make-getter
    (make-getter sym name idx)
#make-list
    (make-list k )
    (make-list k fill)
#make-parameter
    (make-parameter init)
    (make-parameter init converter)
#make-setter
    (make-setter sym name idx)
#make-string
    (make-string k)
    (make-string k fill)
#make-type-predicate
    (make-type-predicate pred name)
#map
    (map proc list1 list2 ...)
#max
    (max x1 x2 ...)
#member
    (member obj lst) 
    (member obj lst compare) 
#memq
    (memq obj lst)
#memv
    (memv obj lst)
#min
    (min x1 x2 ...)
#modulo
    (modulo a b)
#negative?
    (negative? n)
#newline
    (newline)
    (newline port) 
#not
    (not x)
#numerator
    (numerator n) n)
#odd?
    (odd? num)
#open-input-bytevector
    (open-input-bytevector bv)
#open-input-string
    (open-input-string string)
#open-output-bytevector
    (open-output-bytevector open-output-string)
#open-output-string
    (open-output-string)
#or
    (or {test1} ...)
#output-port-open?
    (output-port-open? port)
#output-port?
    (output-port? obj)
#parameterize
    (parameterize (({param1} {value1}) ...)
      {body})
#positive?
    (positive? n)
#quasiquote
    (quasiquote {qq template})
#quotient
    (quotient x y)
#raise
    (raise obj)
#raise-continuable
    (raise-continuable obj)
#rational?
    (rational? obj)
#read-line
    (read-line)
    (read-line port)
#read-string
    (read-string k)
    (read-string k port)
#receive
    (receive {formals} {expression} {body})
#record?
    (record? obj)
#remainder
    (remainder num1 num2)
#reverse
    (reverse lst)
#round
    (round z)
#slot-set!
    (slot-set! name obj idx val)
#square
    (square z)
#string
    (string char ...)
#string->list
    (string->list string)
    (string->list string start)
    (string->list string start end)
#string->utf8
    (string->utf8 string)
    (string->utf8 string start)
    (string->utf8 string start end)
#string->vector
    (string->vector string)
    (string->vector string start)
    (string->vector string start end)
#string-copy
    (string-copy string)
    (string-copy string start)
    (string-copy string end)
#string-copy!
    (string-copy! to at from)
    (string-copy! to at from start)
    (string-copy! to at from start end)
#string-fill!
    (string-fill! str fill)
    (string-fill! str fill start)
    (string-fill! str fill start end)
#string-for-each
    (string-for-each proc string1 string2 ...)
#string-map
    (string-map proc string1 string2 ...)
#string<=?
    (string<=? str1 str2)
#string<?
    (string<? str1 str2)
#string=?
    (string=? str1 str2)
#string>=?
    (string>=? str1 str2)
#string>?
    (string>? str1 str2)
#symbol=?
    (symbol=? symbol1 symbol2 symbol3 ...)
#syntax-error
    (syntax-error {message} {args} ...)
#truncate
    (truncate z)
#truncate-quotient 
    (truncate-quotient quotient)
#truncate-remainder 
    (truncate-remainder remainder)
#truncate/ 
    (truncate/ n m)
#type-slot-offset
    (type-slot-offset name sym)
#unless
    (unless {test} {expression1} {expression2} ...)
#utf8->string
    (utf8->string bytevector)
    (utf8->string bytevector start)
    (utf8->string bytevector start end)
#values
    (values obj ...)
#vector
    (vector obj ...)
#vector->list
    (vector->list vector)
    (vector->list vector start)
    (vector->list vector start end)
#vector->string
    (vector->string vector)
    (vector->string vector start)
    (vector->string vector start end)
#vector-append
    (vector-append vector ...)
#vector-copy
    (vector-copy vector)
    (vector-copy vector start)
    (vector-copy vector start end)
#vector-copy!
    (vector-copy! to at from)
    (vector-copy! to at from start)
    (vector-copy! to at from start end)
#vector-fill!
    (vector-fill! vector fill)
    (vector-fill! vector fill start)
    (vector-fill! vector fill start end)
#vector-for-each
    (vector-for-each proc vector1 vector2 ...)
#vector-map
    (vector-map proc vector1 vector2 ...)
#when
    (when {test} {expression1} {expression2} ...)
#with-exception-handler
    (with-exception-handler handler thunk)
#write-char
    (write-char char)
    (write-char char port)
#write-string
    (write-string string)
    (write-string string port)
#zero?
    (zero? n)