(abs v): number?
v: number?
Returns the absolute value of v
.
(abs v): number?
v: number?
Returns the absolute value of v
.
(acos v): number?
v: number?
Returns the arc cosine of v
.
(append l1 l2 ...): list?
l: list?
Returns a new list containing the elements of lists l1
, l2
, … in sequence.
(apply f l): any
f: procedure?
l: list?
Calls f
with the values contained in l
.
(asin v): number?
v: number?
Returns the arc sine of v
.
(assoc-key? k l): any
k: any
l: list?, an association list
Returns #t
if k
is a key in association list l
.
(assoc-ref k l): any
k: any
l: list?, an association list
Returns the value associated with key k
in association list l
.
(assoc-set k v l): list?
k: any
v: any
l: list?, an association list
Returns a new association list containing the same key-value pairs as l
except that k
is associated with v
.
(atan v): number?
v: number?
Returns the arc tangent of v
.
(boolean? v): boolean?
v: any
Returns #t
if and only v
is a boolean.
(car v): any
v: pair?
Returns the first element of v
.
(cdr v): any
v: pair?
Returns the second element of v
.
(ceiling v): integer?
v: number?
Returns the smallest integer greater than or equal to v
.
(char-alphabetic? c): boolean?
c: char?
Returns #t
if and only c
is an alphabetic character.
(char-downcase c): char?
c: char?
Returns the lower-case equivalent of c
.
(char=? c1 c2 ...): boolean?
c: char?
Returns #t
if and only c1
, c2
, … are all equivalent characters.
(char-ci=? c1 c2 ...): boolean?
c: char?
Returns #t
if and only c1
, c2
, … are all equivalent characters, ignoring case.
(char-foldcase c): char?
c: char?
Returns the case-folded equivalent of c
. This is a version of c
that is appropriate for case-insensitive comparison.
(char>=? c1 c2 ...): boolean?
c: char?
Returns #t
if and only c1
, c2
, … have non-increasing character values.
(char-ci>=? c1 c2 ...): boolean?
c: char?
Returns #t
if and only c1
, c2
, … have non-increasing character values, ignoring case.
(char>? c1 c2 ...): boolean?
c: char?
Returns #t
if and only c1
, c2
, … have strictly decreasing character values.
(char-ci>? c1 c2 ...): boolean?
c: char?
Returns #t
if and only c1
, c2
, … have strictly decreasing character values, ignoring case.
(char<=? c1 c2 ...): boolean?
c: char?
Returns #t
if and only c1
, c2
, … have non-decreasing character values.
(char-ci<=? c1 c2 ...): boolean?
c: char?
Returns #t
if and only c1
, c2
, … have non-decreasing character values, ignoring case.
(char-lower-case? c): boolean?
c: char?
Returns #t
if and only c
is a lower-case character.
(char<? c1 c2 ...): boolean?
c: char?
Returns #t
if and only c1
, c2
, … have strictly increasing character values.
(char-ci<? c1 c2 ...): boolean?
c: char?
Returns #t
if and only c1
, c2
, … have strictly increasing character values, ignoring case.
(char-numeric? c): boolean?
c: char?
Returns #t
if and only c
is a numeric character.
(char? v): boolean?
v: any
Returns #t
if and only v
is a character.
(char->integer c): integer?
c: char?
Returns the codepoint value of character c
.
(char-upcase c): char?
c: char?
Returns the upper-case equivalent of c
.
(char-upper-case? c): boolean?
c: char?
Returns #t
if and only c
is an upper-case character.
(char-whitespace? c): boolean?
c: char?
Returns #t
if and only c
is a whitespace character.
(compose f1 f2 ...): procedure?
f: procedure?
Returns a new procedure that is the composition of the given functions, i.e., f(x) = f1(f2(...(fk(x))))
.
(cons v1 v2): pair?
v1: any
v2: any
Returns a new pair containing v1
and v2
.
(cos v): number?
v: number?
Returns the cosine of v
.
(digit-value c): integer?
c: char?
Returns the numeric value of c
if c
is a decimal digit (0-10), otherwise raises an error.
(/ v1 v2 ...): number?
v: number?
Returns the quotient of v1
, v2
, … .
else: ?boolean
A synonym for #t
appropriate for use as the final guard of a cond
expression.
(equal? v1 v2): boolean?
v1: any
v2: any
Returns #t
if and only v1
and v2
are (structurally) equal values.
(=eps n): procedure?
n: number?
Returns a function that takes two numbers x
and y
as input returns #t
if |x - y| < n
.
(error msg): any
msg: string?
Raises a runtime error with message msg
.
(even? v): boolean?
v: any
Returns #t
if and only v
is even.
(exp v): number?
v: number?
Returns the exponential of v
.
(expt x y): number?
x: number?
y: number?
Returns x
raised to the power of y
.
(file->lines path): list?
path: string?
Returns the contents of the file at path
as a list of strings, one for each line.
(file->string path): string?
path: string?
Returns the contents of the file at path
as a string.
(filter f l): list?
f: procedure?, a predicate
l: list?
Returns a new list containing the elements of l
for which f
returns #t
.
(floor v): integer?
v: number?
Returns the largest integer less than or equal to v
.
(fold f v l): any
f: procedure?, a binary function
v: any
l: list?
Returns the result of accumulating the result of applying f
to each element of l
, starting with initial value v
. The function f
takes two arguments, the first is the accumulated value and the second is the current element.
(fold-right f v l): any
f: procedure?, a binary function
v: any
l: list?
Returns the result of accumulating the result of applying f
to each element of l
in reverse order, starting with initial value v
. The function f
takes two arguments, the first is the current element and the second is the accumulated value.
(for-range beg end f): void?
beg: number?
end: number?
f: procedure?
Runs f
on each integer in the range [beg, end)
. f
takes one argument, the current value of integer.
(>= v1 v2): boolean?
v1: number?
v2: number?
Returns #t
if and only v1
is greater than or equal to v2
.
(> v1 v2): boolean?
v1: number?
v2: number?
Returns #t
if and only v1
is strictly greater than v2
.
(ignore v): void
v: any
Suppresses the output of value v
to the page.
(implies v1 v2): boolean?
v1: boolean?
v2: boolean?
Equivalent to (if v1 v2 #t)
.
(index-of l v): integer?
l: list?
v: any
Returns the index of the first occurrence of v
in l
or -1
if v
is not in l
.
(integer? v): boolean?
v: any
Returns #t
if and only v
is an integer.
(integer->char n): char?
n: integer?
Returns the character with codepoint value n
.
(length v): integer?
v: list?
Returns the length of v
.
(<= v1 v2): boolean?
v1: number?
v2: number?
Returns #t
if and only v1
is less than or equal to v2
.
(list v1 v2 ...): list?
v: any
Returns a new list containing v1
, v2
, … .
(list-drop l k): list?
l: list?
k: integer?, 0 <= k <= (length l)
An alias for (list-tail l k)
.
(list? v): boolean?
v: any
Returns #t
if and only v
is a list.
(list-ref l n): any
l: list?
n: integer?, 0 <= n < (length l)
Returns the n
th element of l
.
(list->string l): string?
l: list?
Returns a string made by joining the characters in l
together.
(list-tail l k): list?
l: list?
k: integer?, 0 <= k <= (length l)
Returns l
but with the first k
elements of l
omitted.
(list-take l k): list?
l: list?
k: integer?, 0 <= k <= (length l)
Returns a new list containing the first k
elements of l
.
(list->vector l): vector?
l: list?
Returns a vector consisting of the values in list l
.
(log v): number?
v: number?
Returns the natural logarithm of v
.
(< v1 v2): boolean?
v1: number?
v2: number?
Returns #t
if and only v1
is strictly less than v2
.
(make-list n v): list?
n: integer?
v: any
Returns a new list containing n
copies of v
.
(make-string k c): string?
k: integer?
c: char?
Returns a string of length k
with each character set to c
.
(make-vector k v): vector?
k: integer?
v: any
Returns a vector of length k
with each element set to v
.
(map f l): list?
f: procedure?
l: list?
Returns a new list containing the results of applying f
to each element of l
.
(max v1 v2 ...): number?
v: number?
Returns the maximum of the given numbers.
(min v1 v2 ...): number?
v: number?
Returns the minimum of the given numbers.
(- v1 v2 ...): number?
v: number?
Returns the difference of v1
, v2
, … .
(modulo v1 v2): number?
v1: number?
v2: number?
Returns k = n - d * q
where q
is the integer such that k
has the same sign as the divisor d
while being as close to 0 as possible. (Source: MDN docs.)
(nan? v): boolean?
v: any
Returns #t
if and only v
is the number NaN
.
(nand v1 v2 ...): boolean?
v: boolean?
Equivalent to (not (and v1 v2 ...))
.
(negative? v): boolean?
v: any
Returns #t
if and only v
is negative.
(nor v1 v2 ...): boolean?
v: boolean?
Equivalent to (not (or v1 v2 ...))
.
(not v): boolean?
v: any
Returns #t
if and only v
is #f
.
(null? v): boolean?
v: any
Returns #t
if and only v
is the empty list.
(number? v): boolean?
v: any
Returns #t
if and only v
is a number.
(number->string v): string?
v: number?
Returns the string representation of v
.
(= v1 v2): boolean?
v1: number?
v2: number?
Returns #t
if and only v1
is equal to v2
.
(o f1 f2 ...): procedure?
f: procedure?
A synonym for compose
.
(odd? v): boolean?
v: any
Returns #t
if and only v
is odd.
(pair v1 v2): pair?
v1: any
v2: any
Returns a new pair containing v1
and v2
.
(pair? v): boolean?
v: any
Returns #t
if and only v
is a pair.
pi: number
The constant π.
(|> v f1 f2 ...): any
v: any
f: procedure?
Returns the result of applying the given function in sequence, starting with initial value v
, i.e., fk(fk-1(...(f1(v))))
.
(+ v1 v2 ...): number?
v: number?
Returns the sum of v1
, v2
, … .
(positive? v): boolean?
v: any
Returns #t
if and only v
is positive.
(procedure? v): boolean?
v: any
Returns #t
if and only v
is a procedure.
{??}: any
A placeholder for an expression that is not yet implemented.
(quotient v1 v2): number?
v1: integer?
v2: integer?
Returns the quotient of v1
and v2
, i.e., the whole number part of v1 / v2
.
(random n): list?
n: integer?, n >= 0
Returns a random number in the range 0 to n (exclusive).
(range beg end): list?
beg: integer?, this argument can be omitted
end: integer?
step: integer?, step > 0, this argument can be omitted
Returns a list containing the numbers from beg
to end
(exclusive). If beg
is not given, it defaults to 0. If step is not given, it defaults to 1.
(real? v): boolean?
v: any
Returns #t
if and only v
is a real number.
(reduce f l): any
f: procedure?, a binary function
l: list?, non-empty
Like fold
but uses the first element of l
as the initial value.
(reduce-right f l): any
f: procedure?, a binary function
l: list?, non-empty
Like fold-right
but uses the last element of l
as the initial value.
(remainder v1 v2): number?
v1: integer?
v2: integer?
Returns the remainder of v1
and v2
, i.e., the remainder of v1 / v2
.
(reverse l): list?
l: list?
Returns a new list containing the elements of l
in reverse order.
(round v): integer?
v: number?
Returns the integer closest to v
.
(sin v): number?
v: number?
Returns the sine of v
.
(sqrt v): number?
v: number?
Returns the square root of v
.
(square v): number?
v: number?
Returns the square of v
.
(string c1 c2 ...): string?
c: char?
Returns a string consisting of the characters c1
, c2
, …
(string-append s1 s2 ...): string?
s: string?
Returns a string made by joining s1
, s2
, … together.
(string-contains? s1 s2): boolean?
s1: string?
s2: string?
Returns #t
if and only if string s1
contains string s2
.
(string-downcase s): string?
s: string?
Returns the lower-case version of s
.
(string=? s1 s2 ...): boolean?
s: string?
Returns #t
if and only s1
, s2
, … are equivalent strings.
(string-ci=? s1 s2 ...): boolean?
s: string?
Returns #t
if and only s1
, s2
, … are equivalent strings, ignoring case.
(string-foldcase s): string?
s: string?
Returns the case-folded version of s
. This is a version of s
that is appropriate for case-insensitive comparison.
(string>=? s1 s2 ...): boolean?
s: string?
Returns #t
if and only s1
, s2
, … are in reverse lexicographical order.
(string-ci>=? s1 s2 ...): boolean?
s: string?
Returns #t
if and only s1
, s2
, … are in reverse lexicographical order, ignoring case.
(string>? s1 s2 ...): boolean?
s: string?
Returns #t
if and only s1
, s2
, … are in strictly lexicographically decreasing order.
(string-ci>? s1 s2 ...): boolean?
s: string?
Returns #t
if and only s1
, s2
, … are in strictly lexicographically decreasing order, ignoring case.
(string-length v): integer?
v: string?
Returns the length of v
.
(string<=? s1 s2 ...): boolean?
s: string?
Returns #t
if and only s1
, s2
, … are in lexicographical order.
(string-ci<=? s1 s2 ...): boolean?
s: string?
Returns #t
if and only s1
, s2
, … are in lexicographical order, ignoring case.
(string->list s): list?
s: string?
Returns a list of the characters in s
.
(string<? s1 s2 ...): boolean?
s: string?
Returns #t
if and only s1
, s2
, … are in strictly lexicographically increasing order.
(string-ci<? s1 s2 ...): boolean?
s: string?
Returns #t
if and only s1
, s2
, … are in strictly lexicographically increasing order, ignoring case.
(string-map f s): string?
f: procedure?, a function from characters to characters
s: string?
Returns a new string containing the results of applying f
to each character of s
.
(string->number s): number?
s: string?, presumed to be a number
Returns the number denoted by s
as a number
.
(string? v): boolean?
v: any
Returns #t
if and only v
is a string.
(string-ref s n): string?
s: string?
n: integer?
Returns the character at index n
of string s
.
(string-split s sep): list?
s: string?
sep: string?
Returns a list of strings obtained by splitting s
at occurrences of sep
.
(string-split-vector s sep): list?
s: string?
sep: string?
Returns a vector of strings obtained by splitting s
at occurrences of sep
.
(string-upcase s): string?
s: string?
Returns the upper-case version of s
.
(string->vector s): vector?
s: string?
Returns a vector of the characters in s
.
(substring s start end): string?
s: string?
start: integer?
end: integer?
Returns the substring of s
from index start
(inclusive) to index end
(exclusive).
(tan v): number?
v: number?
Returns the tangent of v
.
(* v1 v2 ...): number?
v: number?
Returns the product of v1
, v2
, … .
(truncate v): integer?
v: number?
Returns the integer closest to v
less than or equal to v
.
(vector v1 v2 ...): vector?
v: any
Returns a vector consisting of the values v1
, v2
, …
(vector-append v1 .. vk): vector?
v: vector?
Returns a new vector containing the elements of v1
, …, vk
in order.
(vector-fill! v x): void?
v: vector?
x: any
Sets each element of vector v
to x
.
(vector-filter f l): list?
f: procedure?, a predicate
l: vector?
Returns a new vector containing the elements of l
for which f
returns #t
.
(vector-for-each f v1 .. vk): void
f: procedure?
v: vector?
Runs f
on each element of v1
, …, vk
in a element-wise fashion. f
takes k+1
arguments where the first argument is the current index and the remaining arguments are the elements of each vector at that index.
(vector-length v): integer?
v: vector?
Returns the length of vector v
.
(vector->list v): list?
v: vector?
Returns a list consisting of the values in vector v
.
(vector-map f v1 .. vk): vector?
f: procedure?
v: vector?
Returns a new vector containing the results of applying f
to each element of v1
, …, vk
in a element-wise fashion.
(vector-map f v1 .. vk): void
f: procedure?
v: vector?
Mutates v1 with the results of results of applying f
to each element of v1
, …, vk
in a element-wise fashion.
(vector? v): boolean
v: any
Returns #t
if and only v
is a vector.
(vector-range beg end): vector?
beg: integer?, this argument can be omitted
end: integer?
step: integer?, step > 0, this argument can be omitted
Returns a vector containing the numbers from beg
to end
(exclusive). If beg
is not given, it defaults to 0. If step is not given, it defaults to 1.
(vector-ref v n): any?
v: vector?
n: integer?, a valid index into v
Returns the value at index n
of vector v
.
(vector-set! v n x): void?
v: vector?
n: integer?, a valid index into v
x: any
Sets the value at index n
of vector v
to x
.
(vector->string v): string?
v: vector? of characters
Returns a string made by joining the characters in v
together.
(void? v): boolean?
v: any
Returns #t
if and only if v
is the void value.
void: void
The void value.
(with-file fn): void
fn: procedure?
Creates a file choose widget. When a file is selected, fn
is called and passed the file's contents as input
(with-handler h f v1 .. vk): any
h: procedure?, a handler
f: procedure?, a function
v: any
Calls (f v1 .. vk)
and if an error is occurred, calls (h err)
where err
is the string associated with the raised error.
(xor v1 v2): boolean?
v1: boolean?
v2: boolean?
Equivalent to (or (and v1 (not v2)) (and (not v1) v2))
.
(zero? v): boolean?
v: any
Returns #t
if and only v
is zero.