mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-19 05:39:17 +02:00
851 lines
12 KiB
Markdown
851 lines
12 KiB
Markdown
# 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)
|
|
|