This commit is contained in:
Justin Ethier 2016-10-04 00:26:49 -04:00
parent 1882e35b1d
commit 1df3dacb61
35 changed files with 1912 additions and 782 deletions

View file

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

View file

@ -11,7 +11,7 @@ For more information see the [R<sup>7</sup>RS Scheme Specification](../../r7rs.p
- [`case-lambda`](#case-lambda)
#case-lambda
# case-lambda
(case-lambda {clause} ...)

View file

@ -32,48 +32,91 @@ For more information see the [R<sup>7</sup>RS Scheme Specification](../../r7rs.p
- [`string-foldcase`](#string-foldcase)
- [`string-upcase`](#string-upcase)
#char-alphabetic?
# char-alphabetic?
(char-alphabetic? c)
#char-ci<=?
# char-ci<=?
(char-ci<=? c1 c2 . cs)
#char-ci<?
# char-ci<?
(char-ci<? c1 c2 . cs)
#char-ci=?
# char-ci=?
(char-ci=? c1 c2 . cs)
#char-ci>=?
# char-ci>=?
(char-ci>=? c1 c2 . cs)
#char-ci>?
# char-ci>?
(char-ci>? c1 c2 . cs)
#char-downcase
# char-downcase
(char-downcase c)
#char-foldcase
# char-foldcase
(char-foldcase c)
#char-lower-case?
# char-lower-case?
(char-lower-case? c)
#char-numeric?
# char-numeric?
(char-numeric? c)
#char-upcase
# char-upcase
(char-upcase c)
#char-upper-case?
# char-upper-case?
(char-upper-case? c)
#char-whitespace?
# char-whitespace?
(char-whitespace? c)
#digit-value
# digit-value
(digit-value c)
#string-ci<=?
# string-ci<=?
(string-ci<=? s1 s2)
#string-ci<?
# string-ci<?
(string-ci<? s1 s2)
#string-ci=?
# string-ci=?
(string-ci=? s1 s2)
#string-ci>=?
# string-ci>=?
(string-ci>=? s1 s2)
#string-ci>?
# string-ci>?
(string-ci>? s1 s2)
#string-downcase
# string-downcase
(string-downcase str)
#string-foldcase
# string-foldcase
(string-foldcase str)
#string-upcase
# string-upcase
(string-upcase str)

View file

@ -16,15 +16,27 @@ For more information see the [R<sup>7</sup>RS Scheme Specification](../../r7rs.p
- [`make-rectangular`](#make-rectangular)
- [`real-part`](#real-part)
#angle
# angle
(angle z)
#imag-part
# imag-part
(imag-part x)
#magnitude
# magnitude
(magnitude z)
#make-polar
# make-polar
(make-polar x y)
#make-rectangular
# make-rectangular
(make-rectangular x y)
#real-part
# real-part
(real-part x)

View file

@ -39,51 +39,99 @@ For more information see the [R<sup>7</sup>RS Scheme Specification](../../r7rs.p
- [`cdddar`](#cdddar)
- [`cddddr`](#cddddr)
#caaar
# caaar
(caaar list)
#caadr
# caadr
(caadr list)
#cadar
# cadar
(cadar list)
#caddr
# caddr
(caddr list)
#cdaar
# cdaar
(cdaar list)
#cdadr
# cdadr
(cdadr list)
#cddar
# cddar
(cddar list)
#cdddr
# cdddr
(cdddr list)
#caaaar
# caaaar
(caaaar list)
#caaadr
# caaadr
(caaadr list)
#caadar
# caadar
(caadar list)
#caaddr
# caaddr
(caaddr list)
#cadaar
# cadaar
(cadaar list)
#cadadr
# cadadr
(cadadr list)
#caddar
# caddar
(caddar list)
#cadddr
# cadddr
(cadddr list)
#cdaaar
# cdaaar
(cdaaar list)
#cdaadr
# cdaadr
(cdaadr list)
#cdadar
# cdadar
(cdadar list)
#cdaddr
# cdaddr
(cdaddr list)
#cddaar
# cddaar
(cddaar list)
#cddadr
# cddadr
(cddadr list)
#cdddar
# cdddar
(cdddar list)
#cddddr
# cddddr
(cddddr list)

View file

@ -16,22 +16,32 @@ The `(scheme cyclone ast)` library defines abstract syntax tree types used durin
- [`ast:lambda-body`](#astlambda-body)
- [`ast:set-lambda-body!`](#astset-lambda-body)
#ast:make-lambda
# ast:make-lambda
(ast:make-lambda args body)
#ast:%make-lambda
# ast:%make-lambda
(ast:%make-lambda lambda-id args body)
#ast:lambda?
# ast:lambda?
(ast:lambda? obj)
#ast:lambda-id
# ast:lambda-id
(ast:lambda-id lambda-obj)
#ast:lambda-args
# ast:lambda-args
(ast:lambda-args lambda-obj)
#ast:set-lambda-args!
# ast:set-lambda-args!
(ast:set-lambda-args! lambda-obj args)
#ast:lambda-body
# ast:lambda-body
(ast:lambda-body lambda-obj)
#ast:set-lambda-body!
# ast:set-lambda-body!
(ast:set-lambda-body! lambda-obj body)

View file

@ -15,24 +15,45 @@ The `(scheme cyclone cgen)` library compiles scheme code to a Cheney-on-the-MTA
- [`emit-newline`](#emit-newline)
- [`string-join`](#string-join)
#mta:code-gen
# mta:code-gen
(mta:code-gen input-program program? lib-name lib-exports imported-globals globals c-headers required-libs src-file)
Convert the given input program - as pre-processed Scheme AST - into C code. This function cannot be called directly on a Scheme program, but must be called on Scheme code that has already been processed by all of the compiler's Scheme transformations, including CPS and closure conversions.
#emit
# emit
(emit string)
`display` the string to the output port with a trailing newline.
#emit\*
# emit\*
(emit* string ...)
Emit all of the given strings and add a trailing newline.
#emits
# emits
(emits string)
`display` the string to the output port.
#emits\*
# emits\*
(emits* string ...)
Call `emits` for each of the given strings.
#emit-newline
# emit-newline
(emit-newline)
`display` a newline to the current output port.
#string-join
# string-join
(string-join list deliminator)
Create a single string from a list of strings, adding `deliminator` between each of the strings.

View file

@ -14,15 +14,27 @@ The `(scheme cyclone common)` library contains definitions used by the compiler
- [`*version-banner*`](#version-banner)
- [`*c-file-header-comment*`](#c-file-header-comment)
#\*Cyc-version-banner\*
# \*Cyc-version-banner\*
The version banner printed when `icyc` starts.
#\*version\*
# \*version\*
The version number and name.
#\*version-number\*
# \*version-number\*
The current version number.
#\*version-name\*
# \*version-name\*
The current version name.
#\*version-banner\*
# \*version-banner\*
The version banner printed when `icyc` starts.
#\*c-file-header-comment\*
# \*c-file-header-comment\*
The header comment added to C files.

View file

@ -43,38 +43,73 @@ The `(scheme cyclone optimizations)` library performs CPS analysis and optimizat
- [`adbf:unused-params`](#adbfunused-params)
- [`adbf:set-unused-params!`](#adbfset-unused-params)
#optimize-cps
#analyze-cps
#opt:contract
#opt:inline-prims
#adb:clear!
#adb:get
#adb:get/default
#adb:set!
#adb:get-db
#simple-lambda?
#one-instance-of-new-mutable-obj?
#adb:make-var
#%adb:make-var
#adb:variable?
#adbv:global?
#adbv:set-global!
#adbv:defined-by
#adbv:set-defined-by!
#adbv:reassigned?
#adbv:set-reassigned!
#adbv:assigned-value
#adbv:set-assigned-value!
#adbv:const?
#adbv:set-const!
#adbv:const-value
#adbv:set-const-value!
#adbv:ref-by
#adbv:set-ref-by!
#adb:make-fnc
#%adb:make-fnc
#adb:function?
#adbf:simple
#adbf:set-simple!
#adbf:unused-params
#adbf:set-unused-params!
# optimize-cps
# analyze-cps
# opt:contract
# opt:inline-prims
# adb:clear!
# adb:get
# adb:get/default
# adb:set!
# adb:get-db
# simple-lambda?
# one-instance-of-new-mutable-obj?
# adb:make-var
# %adb:make-var
# adb:variable?
# adbv:global?
# adbv:set-global!
# adbv:defined-by
# adbv:set-defined-by!
# adbv:reassigned?
# adbv:set-reassigned!
# adbv:assigned-value
# adbv:set-assigned-value!
# adbv:const?
# adbv:set-const!
# adbv:const-value
# adbv:set-const-value!
# adbv:ref-by
# adbv:set-ref-by!
# adb:make-fnc
# %adb:make-fnc
# adb:function?
# adbf:simple
# adbf:set-simple!
# adbf:unused-params
# adbf:set-unused-params!

View file

@ -33,29 +33,55 @@ The `(scheme cyclone libraries)` library implements r7rs libraries.
- [`lib:idb:ids`](#libidb:ids)
- [`lib:idb:id->import`](#libidb:id-import)
#library?
# library?
(library? obj)
#lib:list->import-set
#lib:name
#lib:name->string
#lib:name->symbol
#lib:result
#lib:exports
#lib:rename-exports
#lib:imports
#lib:body
#lib:includes
#lib:include-c-headers
#lib:import->filename
#lib:import->metalist
#lib:import->path
#lib:read-imports
#lib:import->export-list
#lib:resolve-imports
#lib:resolve-meta
#lib:get-all
#lib:get-all-import-deps
#lib:get-dep-list
#lib:imports->idb
#lib:idb:ids
#lib:idb:id->import
# lib:list->import-set
# lib:name
# lib:name->string
# lib:name->symbol
# lib:result
# lib:exports
# lib:rename-exports
# lib:imports
# lib:body
# lib:includes
# lib:include-c-headers
# lib:import->filename
# lib:import->metalist
# lib:import->path
# lib:read-imports
# lib:import->export-list
# lib:resolve-imports
# lib:resolve-meta
# lib:get-all
# lib:get-all-import-deps
# lib:get-dep-list
# lib:imports->idb
# lib:idb:ids
# lib:idb:id->import

View file

@ -16,11 +16,19 @@ The `(scheme cyclone macro)` library contains code to deal with macros.
- [`macro:get-env`](#macroget-env)
- [`macro:get-defined-macros`](#macroget-defined-macros)
#define-syntax?
#macro:macro?
#macro:expand
#macro:add!
#macro:cleanup
#macro:load-env!
#macro:get-env
#macro:get-defined-macros
# define-syntax?
# macro:macro?
# macro:expand
# macro:add!
# macro:cleanup
# macro:load-env!
# macro:get-env
# macro:get-defined-macros

View file

@ -9,7 +9,10 @@ The `(scheme cyclone pretty-print)` library provides a pretty-printer for code f
- [`pretty-print`](#pretty-print)
#pretty-print
# pretty-print
(pretty-print obj)
(pretty-print obj port)
Outputs object to the given output port, or the current output port if none is given. The output is automatically indented just like it would be in a source code file, to make it easier to read.

View file

@ -22,17 +22,31 @@ The `(scheme cyclone primitives)` library contains information about Cyclone's s
- [`prim:arg-count?`](#primarg-count)
- [`prim:allocates-object?)`](#primallocates-object)
#prim?
#\*primitives\*
#\*primitives-num-args\*
#prim-call?
#prim->c-func
#prim/data-arg?
#prim/c-var-assign
#prim/cvar?
#prim:check-arg-count
#prim:mutates?
#prim:cont?
#prim:cont/no-args?
#prim:arg-count?
#prim:allocates-object?)
# prim?
# \*primitives\*
# \*primitives-num-args\*
# prim-call?
# prim->c-func
# prim/data-arg?
# prim/c-var-assign
# prim/cvar?
# prim:check-arg-count
# prim:mutates?
# prim:cont?
# prim:cont/no-args?
# prim:arg-count?
# prim:allocates-object?)

View file

@ -34,29 +34,55 @@ The `(scheme cyclone test)` library contains a testing framework ported from `(c
- [`current-test-epsilon`](#current-test-epsilon)
- [`current-test-comparator`](#current-test-comparator)
#warning
#test-group-inc!
#print-exception
#test
#test-equal
#test-error
#test-assert
#test-not
#test-values
#test-group
#current-test-group
#test-begin
#test-end
#test-syntax-error
#test-propagate-info
#test-vars
#test-run
#test-exit
#current-test-verbosity
#current-test-applier
#current-test-handler
#current-test-skipper
#current-test-group-reporter
#test-failure-count
#current-test-epsilon
#current-test-comparator
# warning
# test-group-inc!
# print-exception
# test
# test-equal
# test-error
# test-assert
# test-not
# test-values
# test-group
# current-test-group
# test-begin
# test-end
# test-syntax-error
# test-propagate-info
# test-vars
# test-run
# test-exit
# current-test-verbosity
# current-test-applier
# current-test-handler
# current-test-skipper
# current-test-group-reporter
# test-failure-count
# current-test-epsilon
# current-test-comparator

View file

@ -88,83 +88,163 @@ The `(scheme cyclone transforms)` library performs Scheme-to-Scheme transformati
- [`union `](#union)
- [`wrap-mutables `](#wrap-mutables)
#\*defined-macros\*
#\*do-code-gen\*
#\*primitives\*
#\*trace-level\*
#alpha-convert
#analyze-mutable-variables
#app->args
#app->fun
#assq-remove-key
#assq-remove-keys
#ast:lambda-formals->list
#ast:lambda-formals-type
#azip
#basename
#begin->exps
#built-in-syms
#cell->value
#cell-get->cell
#cell-get?
#cell?
#clear-mutables
#closure->env
#closure->fv
#closure->lam
#closure-convert
#closure?
#cps-convert
#cyc:error
#define->lambda
#define-lambda?
#difference
#env-get->env
#env-get->field
#env-get->id
#env-get?
#env-make->fields
#env-make->id
#env-make->values
#env-make?
#expand
#expand-lambda-body
#filter-unused-variables
#free-vars
#get-macros
#global-vars
#has-global?
#insert
#is-mutable?
#isolate-globals
#lambda-num-args
#let->args
#let->bindings
#let->bound-vars
#let->exp
#let=>lambda
#let?
#letrec->args
#letrec->bindings
#letrec->bound-vars
#letrec->exp
#letrec?
#list->lambda-formals
#list->pair
#list-index
#mark-mutable
#pos-in-list
#precompute-prim-app?
#reduce
#remove
#set-cell!->cell
#set-cell!->value
#set-cell!?
#symbol<?
#trace
#trace:debug
#trace:error
#trace:info
#trace:warn
#union
#wrap-mutables
# \*defined-macros\*
# \*do-code-gen\*
# \*primitives\*
# \*trace-level\*
# alpha-convert
# analyze-mutable-variables
# app->args
# app->fun
# assq-remove-key
# assq-remove-keys
# ast:lambda-formals->list
# ast:lambda-formals-type
# azip
# basename
# begin->exps
# built-in-syms
# cell->value
# cell-get->cell
# cell-get?
# cell?
# clear-mutables
# closure->env
# closure->fv
# closure->lam
# closure-convert
# closure?
# cps-convert
# cyc:error
# define->lambda
# define-lambda?
# difference
# env-get->env
# env-get->field
# env-get->id
# env-get?
# env-make->fields
# env-make->id
# env-make->values
# env-make?
# expand
# expand-lambda-body
# filter-unused-variables
# free-vars
# get-macros
# global-vars
# has-global?
# insert
# is-mutable?
# isolate-globals
# lambda-num-args
# let->args
# let->bindings
# let->bound-vars
# let->exp
# let=>lambda
# let?
# letrec->args
# letrec->bindings
# letrec->bound-vars
# letrec->exp
# letrec?
# list->lambda-formals
# list->pair
# list-index
# mark-mutable
# pos-in-list
# precompute-prim-app?
# reduce
# remove
# set-cell!->cell
# set-cell!->value
# set-cell!?
# symbol<?
# trace
# trace:debug
# trace:error
# trace:info
# trace:warn
# union
# wrap-mutables

View file

@ -69,64 +69,125 @@ The `(scheme cyclone util`) library contains various utility functions.
- [`tagged-list? `](#tagged-list?)
- [`take `](#take)
#Cyc-er-compare?
#Cyc-er-rename
#app?
#begin?
#const?
#define->exp
#define->var
#define-c?
#define?
#delete
#delete-duplicates
#env:\_lookup-variable-value
#env:add-binding-to-frame!
#env:all-values
#env:all-variables
#env:define-variable!
#env:enclosing-environment
#env:extend-environment
#env:first-frame
#env:frame-values
#env:frame-variables
#env:lookup
#env:lookup-variable-value
#env:make-frame
#env:set-variable-value!
#env:the-empty-environment
#filter
#flatten
#formals->list
#gensym
#identifier->symbol
#identifier=?
#identifier?
#if->condition
#if->else
#if->then
#if-else?
#if?
#lambda->exp
#lambda->formals
#lambda-formals->list
#lambda-formals-type
#lambda-varargs-var
#lambda-varargs?
#lambda?
#length/obj
#list-index2
#list-insert-at!
#list-prefix?
#mangle
#mangle-global
#pack-lambda-arguments
#pair->list
#quote?
#ref?
#set!->exp
#set!->var
#set!?
#string-replace-all
#tagged-list?
#take
# Cyc-er-compare?
# Cyc-er-rename
# app?
# begin?
# const?
# define->exp
# define->var
# define-c?
# define?
# delete
# delete-duplicates
# env:\_lookup-variable-value
# env:add-binding-to-frame!
# env:all-values
# env:all-variables
# env:define-variable!
# env:enclosing-environment
# env:extend-environment
# env:first-frame
# env:frame-values
# env:frame-variables
# env:lookup
# env:lookup-variable-value
# env:make-frame
# env:set-variable-value!
# env:the-empty-environment
# filter
# flatten
# formals->list
# gensym
# identifier->symbol
# identifier=?
# identifier?
# if->condition
# if->else
# if->then
# if-else?
# if?
# lambda->exp
# lambda->formals
# lambda-formals->list
# lambda-formals-type
# lambda-varargs-var
# lambda-varargs?
# lambda?
# length/obj
# list-index2
# list-insert-at!
# list-prefix?
# mangle
# mangle-global
# pack-lambda-arguments
# pair->list
# quote?
# ref?
# set!->exp
# set!->var
# set!?
# string-replace-all
# tagged-list?
# take

View file

@ -13,7 +13,7 @@ For more information see the [R<sup>7</sup>RS Scheme Specification](../../r7rs.p
- [`create-environment`](#create-environment)
- [`setup-environment`] (#setup-environment)
#eval
# eval
(eval expr . environment)
@ -21,7 +21,7 @@ Evaluate `expr` in the specified environment and return the resulting value(s).
A non-standard extension is provided to supply a default global environment if the `environment` argument is not specified.
#create-environment
# create-environment
(create-environment vars values)
@ -29,7 +29,7 @@ A non-standard function to create a new environment on top of the default one.
`vars` is a list of identifiers in the new environment, and `values` is a list of each value assigned to each identifier.
#setup-environment
# setup-environment
(setup-environment)

View file

@ -14,25 +14,25 @@ For more information see the [R<sup>7</sup>RS Scheme Specification](../../r7rs.p
- [`with-input-from-file`](#with-input-from-file)
- [`with-output-to-file`](#with-output-to-file)
#call-with-input-file
# call-with-input-file
(call-with-input-file string proc)
Open given filename for input, pass the resulting port to `proc`, and close the port after `proc` returns.
#call-with-output-file
# call-with-output-file
(call-with-output-file string proc)
Open given filename for output, pass the resulting port to `proc`, and close the port after `proc` returns.
#with-input-from-file
# with-input-from-file
(with-input-from-file string thunk)
Open given filename for input and change the current input to that port for the duration of `thunk`.
#with-output-to-file
# with-output-to-file
(with-output-to-file string thunk)

View file

@ -22,51 +22,51 @@ For more information see the [R<sup>7</sup>RS Scheme Specification](../../r7rs.p
- [`sqrt`](#sqrt)
- [`tan`](#tan)
#acos
# acos
(acos z)
#asin
# asin
(asin z)
#atan
# atan
(atan z)
#cos
# cos
(cos z)
#exp
# exp
(exp z)
#finite?
# finite?
(finite? z)
#infinite?
# infinite?
(infinite? z)
#log
# log
(log z)
#nan?
# nan?
(nan? z)
#sin
# sin
(sin z)
#sqrt
# sqrt
(sqrt z)
#tan
# tan
(tan z)

View file

@ -15,29 +15,29 @@ For more information see the [R<sup>7</sup>RS Scheme Specification](../../r7rs.p
- [`make-promise`](#make-promise)
- [`promise?`](#promise)
#delay
# delay
(delay {expression})
Return a promise object that can be asked in the future (via `force`) to evaluate `{expression}` and return the result.
#force
# force
(force promise)
Force the value of a promise.
#delay-force
# delay-force
(delay-force {expression})
#make-promise
# make-promise
(make-promise obj)
Return a promise which will return `obj` when forced. This function is similar to delay but does not delay its argument: it is a procedure rather than syntax. If `obj` is already a promise, it is returned.
#promise
# promise
(promise? obj)

View file

@ -11,7 +11,7 @@ For more information see the [R<sup>7</sup>RS Scheme Specification](../../r7rs.p
- [`load`](#load)
#load
# load
(load filename)

View file

@ -14,25 +14,25 @@ For more information see the [R<sup>7</sup>RS Scheme Specification](../../r7rs.p
- [`get-environment-variable`](#get-environment-variable)
- [`get-environment-variables`](#get-environment-variables)
#command-line
# command-line
(command-line)
Returns the command line passed to the program as a list of strings.
#emergency-exit
# emergency-exit
(emergency-exit)
Terminates the program immediately. This is an alias of `exit`.
#get-environment-variable
# get-environment-variable
(get-environment-variable name)
Return the value of the given environment variable.
#get-environment-variables
# get-environment-variables
(get-environment-variables)

View file

@ -12,14 +12,14 @@ For more information see the [R<sup>7</sup>RS Scheme Specification](../../r7rs.p
- [`read`](#read)
- [`read-all`](#read-all)
#read
# read
(read)
(read port)
Read a single Scheme object from the input port.
#read-all
# read-all
(read-all)
(read-all port)

View file

@ -13,19 +13,19 @@ For more information see the [R<sup>7</sup>RS Scheme Specification](../../r7rs.p
- [`current-second`](#current-second)
- [`jiffies-per-second`](#jiffies-per-second)
#current-jiffy
# current-jiffy
(current-jiffy)
Get the number of jiffies since the program started. This function can return the same value if the program runs longer than approximately 72 minutes on a 32-bit platform.
#current-second
# current-second
(current-second)
Get the current number of seconds since the UNIX epoch.
#jiffies-per-second
# jiffies-per-second
(jiffies-per-second)

View file

@ -14,14 +14,14 @@ For more information see the [R<sup>7</sup>RS Scheme Specification](../../r7rs.p
- [`write-simple`](#write-simple)
- [`write-shared`](#write-shared)
#display
# display
(display obj)
(display obj port)
Write object to the given output port, or the current output if none is given. Strings and characters are output using only the characters that they represent, without any enclosing quotes, etc.
#write
# write
(write obj)
(write obj port)
@ -29,12 +29,12 @@ Write object to the given output port, or the current output if none is given. S
Write object to the given output port, or the current output if none is given. Objects are written exactly as they are represented in code.
#write-shared
# write-shared
(write-shared obj)
(write-shared obj port)
#write-simple
# write-simple
(write-simple obj)
(write-simple obj port)

View file

@ -111,105 +111,205 @@ See the [SRFI document](http://srfi.schemers.org/srfi-1/srfi-1.html) for more in
- [`lset-difference!`](#lset-difference-1)
- [`lset-xor!`](#lset-xor-1)
#xcons
#tree-copy
#make-list
#list-tabulate
#cons*
#list-copy
#proper-list?
#circular-list?
#dotted-list?
#not-pair?
#null-list?
#list=
#circular-list
#length+
#iota
#first
#second
#third
#fourth
#fifth
#sixth
#seventh
#eighth
#ninth
#tenth
#car+cdr
#take
#drop
#take-right
#drop-right
#take!
#drop-right!
#split-at
#split-at!
#last
#last-pair
#zip
#unzip1
#unzip2
#unzip3
#unzip4
#unzip5
#count
#append!
#append-reverse
#append-reverse!
#concatenate
#concatenate!
#unfold
#fold
#pair-fold
#reduce
#unfold-right
#fold-right
#pair-fold-right
#reduce-right
#append-map
#append-map!
#map!
#pair-for-each
#filter-map
#map-in-order
#filter
#partition
#remove
#filter!
#partition!
#remove!
#find
#find-tail
#any
#every
#list-index
#take-while
#drop-while
#take-while!
#span
#break
#span!
#break!
#delete
#delete!
#alist-cons
#alist-copy
#delete-duplicates
#delete-duplicates!
#alist-delete
#alist-delete!
#reverse!
#lset<=
#lset=
#lset-adjoin
#lset-union
#lset-intersection
#lset-difference
#lset-xor
#lset-diff+intersection
#lset-union!
#lset-intersection!
#lset-difference!
#lset-xor!
# xcons
# tree-copy
# make-list
# list-tabulate
# cons*
# list-copy
# proper-list?
# circular-list?
# dotted-list?
# not-pair?
# null-list?
# list=
# circular-list
# length+
# iota
# first
# second
# third
# fourth
# fifth
# sixth
# seventh
# eighth
# ninth
# tenth
# car+cdr
# take
# drop
# take-right
# drop-right
# take!
# drop-right!
# split-at
# split-at!
# last
# last-pair
# zip
# unzip1
# unzip2
# unzip3
# unzip4
# unzip5
# count
# append!
# append-reverse
# append-reverse!
# concatenate
# concatenate!
# unfold
# fold
# pair-fold
# reduce
# unfold-right
# fold-right
# pair-fold-right
# reduce-right
# append-map
# append-map!
# map!
# pair-for-each
# filter-map
# map-in-order
# filter
# partition
# remove
# filter!
# partition!
# remove!
# find
# find-tail
# any
# every
# list-index
# take-while
# drop-while
# take-while!
# span
# break
# span!
# break!
# delete
# delete!
# alist-cons
# alist-copy
# delete-duplicates
# delete-duplicates!
# alist-delete
# alist-delete!
# reverse!
# lset<=
# lset=
# lset-adjoin
# lset-union
# lset-intersection
# lset-difference
# lset-xor
# lset-diff+intersection
# lset-union!
# lset-intersection!
# lset-difference!
# lset-xor!

View file

@ -48,41 +48,79 @@ See the [SRFI document](http://srfi.schemers.org/srfi-106/srfi-106.html) for mor
- [`*shut-wr*`](#shut-wr)
- [`*shut-rdwr*`](#shut-rdwr)
#make-client-socket
#make-server-socket
#socket?
#socket-accept
#socket-send
#socket-recv
#socket-shutdown
#socket-close
#socket-input-port
#socket-output-port
#call-with-socket
#address-family
#address-info
#socket-domain
#ip-protocol
#message-type
#shutdown-method
#socket-merge-flags
#socket-purge-flags
#\*af-unspec\*
#\*af-inet\*
#\*af-inet6\*
#\*sock-stream\*
#\*sock-dgram\*
#\*ai-canonname\*
#\*ai-numerichost\*
#\*ai-v4mapped\*
#\*ai-all\*
#\*ai-addrconfig\*
#\*ipproto-ip\*
#\*ipproto-tcp\*
#\*ipproto-udp\*
#\*msg-peek\*
#\*msg-oob\*
#\*msg-waitall\*
#\*shut-rd\*
#\*shut-wr\*
#\*shut-rdwr\*
# make-client-socket
# make-server-socket
# socket?
# socket-accept
# socket-send
# socket-recv
# socket-shutdown
# socket-close
# socket-input-port
# socket-output-port
# call-with-socket
# address-family
# address-info
# socket-domain
# ip-protocol
# message-type
# shutdown-method
# socket-merge-flags
# socket-purge-flags
# \*af-unspec\*
# \*af-inet\*
# \*af-inet6\*
# \*sock-stream\*
# \*sock-dgram\*
# \*ai-canonname\*
# \*ai-numerichost\*
# \*ai-v4mapped\*
# \*ai-all\*
# \*ai-addrconfig\*
# \*ipproto-ip\*
# \*ipproto-tcp\*
# \*ipproto-udp\*
# \*msg-peek\*
# \*msg-oob\*
# \*msg-waitall\*
# \*shut-rd\*
# \*shut-wr\*
# \*shut-rdwr\*

View file

@ -14,16 +14,27 @@ See the [SRFI document](http://srfi.schemers.org/srfi-111/srfi-111.html) for mor
- [`unbox`] (#unbox)
- [`set-box!`](#set-box)
#box
# box
(box value)
Constructor. Returns a newly allocated box initialized to value.
#box?
# box?
(box? object)
Predicate. Returns #t if object is a box, and #f otherwise.
#unbox
# unbox
(unbox box)
Accessor. Returns the current value of box.
#set-box!
# set-box!
(set-box! box value)
Mutator. Changes box to hold value.

View file

@ -36,29 +36,55 @@ See the [SRFI document](http://srfi.schemers.org/srfi-117/srfi-117.html) for mor
- [`list-queue-map!`](#list-queue-map-1)
- [`list-queue-for-each`](#list-queue-for-each)
#make-list-queue
#list-queue
#list-queue-copy
#list-queue-unfold
#list-queue-unfold-right
#list-queue?
#list-queue-empty?
#list-queue-front
#list-queue-back
#list-queue-list
#list-queue-first-last
#list-queue-add-front!
#list-queue-add-back!
#list-queue-remove-front!
#list-queue-remove-back!
#list-queue-remove-all!
#list-queue-set-list!
#list-queue-append
#list-queue-append!
#list-queue-concatenate
#list-queue-append
#list-queue-append!
#list-queue-concatenate
#list-queue-map
#list-queue-map!
#list-queue-for-each
# make-list-queue
# list-queue
# list-queue-copy
# list-queue-unfold
# list-queue-unfold-right
# list-queue?
# list-queue-empty?
# list-queue-front
# list-queue-back
# list-queue-list
# list-queue-first-last
# list-queue-add-front!
# list-queue-add-back!
# list-queue-remove-front!
# list-queue-remove-back!
# list-queue-remove-all!
# list-queue-set-list!
# list-queue-append
# list-queue-append!
# list-queue-concatenate
# list-queue-append
# list-queue-append!
# list-queue-concatenate
# list-queue-map
# list-queue-map!
# list-queue-for-each

View file

@ -28,21 +28,39 @@ See the [SRFI document](http://srfi.schemers.org/srfi-132/srfi-132.html) for mor
- [`list-delete-neighbor-dups!`](#list-delete-neighbor-dups-1)
- [`vector-delete-neighbor-dups!`](#vector-delete-neighbor-dups-1)
#list-sorted?
#vector-sorted?
#list-merge
#vector-merge
#list-sort
#vector-sort
#list-stable-sort
#vector-stable-sort
#list-merge!
#vector-merge!
#list-sort!
#vector-sort!
#list-stable-sort!
#vector-stable-sort!
#list-delete-neighbor-dups
#vector-delete-neighbor-dups
#list-delete-neighbor-dups!
#vector-delete-neighbor-dups!
# list-sorted?
# vector-sorted?
# list-merge
# vector-merge
# list-sort
# vector-sort
# list-stable-sort
# vector-stable-sort
# list-merge!
# vector-merge!
# list-sort!
# vector-sort!
# list-stable-sort!
# vector-stable-sort!
# list-delete-neighbor-dups
# vector-delete-neighbor-dups
# list-delete-neighbor-dups!
# vector-delete-neighbor-dups!

View file

@ -37,30 +37,57 @@ See the [SRFI document](http://srfi.schemers.org/srfi-133/srfi-133.html) for mor
- [`reverse-vector->list`](#reverse-vector-list)
- [`reverse-list->vector`](#reverse-list-vector)
#vector-unfold
#vector-unfold-right
#vector-reverse-copy
#vector-concatenate
#vector-append-subvectors
#vector-empty?
#vector=
#vector-fold
#vector-fold-right
#vector-map!
#vector-count
#vector-cumulate
#vector-index
#vector-index-right
#vector-skip
#vector-skip-right
#vector-binary-search
#vector-any
#vector-every
#vector-partition
#vector-swap!
#vector-reverse!
#vector-reverse-copy!
#vector-unfold!
#vector-unfold-right!
#reverse-vector->list
#reverse-list->vector
# vector-unfold
# vector-unfold-right
# vector-reverse-copy
# vector-concatenate
# vector-append-subvectors
# vector-empty?
# vector=
# vector-fold
# vector-fold-right
# vector-map!
# vector-count
# vector-cumulate
# vector-index
# vector-index-right
# vector-skip
# vector-skip-right
# vector-binary-search
# vector-any
# vector-every
# vector-partition
# vector-swap!
# vector-reverse!
# vector-reverse-copy!
# vector-unfold!
# vector-unfold-right!
# reverse-vector->list
# reverse-list->vector

View file

@ -30,70 +30,128 @@ See the [Multithreading support SRFI documentation](http://srfi.schemers.org/srf
- [`->heap`](#-heap)
- [`Cyc-minor-gc`](#Cyc-minor-gc)
#thread?
# thread?
(thread? obj)
Determine if the given object is a thread object.
#make-thread
# make-thread
(make-thread thunk)
(make-thread thunk name)
Create a new thread object.
#thread-name
# thread-name
(thread-name t) (vector-ref t 3))
Retrieve the name of the given thread object.
#thread-specific
# thread-specific
(thread-specific t)
Retrieve thread-specific data.
#thread-specific-set!
# thread-specific-set!
(thread-specific-set! t obj)
Set thread-specific data.
#thread-start!
# thread-start!
(thread-start! t)
Makes thread runnable. The thread must be a new thread. thread-start! returns the thread.
#thread-sleep!
# thread-sleep!
(thread-sleep! timeout)
Block the current thread for `timeout` milliseconds.
#thread-yield!
# thread-yield!
(thread-yield!) (thread-sleep! 1))
The current thread exits the running state as if its quantum had expired.
#thread-terminate!
# thread-terminate!
(thread-terminate!
Immediately abort the current thread.
#mutex?
# mutex?
(mutex? obj)
Determine if the given object is a mutex.
#make-mutex
# make-mutex
(make-mutex)
Create a new mutex object.
NOTE: Creates a new mutex by allocating it on the heap. This is different than other types of objects because by definition a mutex will be used by multiple threads, so no need to risk having the non-creating thread pick up a stack object reference by mistake.
#mutex-lock!
# mutex-lock!
(mutex-lock! mutex)
Lock the given mutex if it is unlocked. If the mutex is currently locked, the current thread waits until the mutex is unlocked.
#mutex-unlock!
# mutex-unlock!
(mutex-unlock! mutex)
(mutex-unlock! mutex condition-variable)
Unlock the given mutex. If there are threads waiting on the mutex, one of those threads will be unblocked. If condition-variable is supplied, the current thread is blocked and added to the condition-variable before unlocking mutex; the thread can unblock at any time but no later than when an appropriate call to condition-variable-signal! or condition-variable-broadcast! is performed (see below). See SRFI documentation for more information on condition variables.
#condition-variable?
# condition-variable?
(condition-variable? obj)
Determine if the given object is a condition variable.
#make-condition-variable
# make-condition-variable
(make-condition-variable)
Create a new condition variable. Like mutex objects, condition variables are always allocated directly on the heap since they are expected to be shared by more than one thread.
#condition-variable-wait!
# condition-variable-wait!
(condition-variable-wait! condition-variable mutex)
Wait on a condition variable. The mutex must be locked by the calling thread, and will be locked upon successful return of this function.
#condition-variable-signal!
# condition-variable-signal!
(condition-variable-signal! condition-variable)
If there are threads blocked on the condition-variable, the scheduler selects a thread and unblocks it.
#condition-variable-broadcast!
# condition-variable-broadcast!
(condition-variable-broadcast! condition-variable)
Unblocks all the threads blocked on the condition-variable.
#->heap
# ->heap
(->heap obj)
Take a single object and if it is on the stack, return a copy of it that is allocated on the heap. NOTE the original object will still live on the stack, and will eventually be moved itself to the heap if it is referenced during minor GC.
#Cyc-minor-gc
# Cyc-minor-gc
(Cyc-minor-gc)
Trigger a minor garbage collection. This is potentially useful to evacuate all objects from a thread's stack to the heap. An object must be moved to the heap before it can be safely used by more than one thread.

View file

@ -13,7 +13,8 @@ See the [SRFI document](http://srfi.schemers.org/srfi-2/srfi-2.html) for more in
- [`and-let*`](#and-let)
#and-let*
# and-let*
(and-let* (claws) body
claws ::= '() | (cons claw claws)

View file

@ -21,29 +21,55 @@ more information.
- [`random-source-make-integers`](#random-source-make-integers)
- [`random-source-make-reals`](#random-source-make-reals)
#random-integer
# random-integer
(random-integer n)
Return the next integer in {0, ..., n-1}.
#random-real
# random-real
(random-real)
The next number `x` such that 0 < x 1.
#default-random-source
# default-random-source
A random source from which random-integer and random-real have been derived using random-source-make-integers and random-source-make-reals. Note that an assignment to default-random-source does not change random or random-real; it is also strongly recommended not to assign a new value.
#make-random-source
# make-random-source
(make-random-source)
Create a new random source.
#random-source?
# random-source?
(random-source? obj)
Determine if the given object is a random source.
#random-source-state-ref
# random-source-state-ref
(random-source-state-ref s)
#random-source-state-set!
# random-source-state-set!
(random-source-state-set! s state)
#random-source-randomize!
# random-source-randomize!
(random-source-randomize! s)
#random-source-pseudo-randomize!
# random-source-pseudo-randomize!
(random-source-pseudo-randomize! s i j)
#random-source-make-integers
# random-source-make-integers
(random-source-make-integers s)
#random-source-make-reals
# random-source-make-reals
(random-source-make-reals s)

View file

@ -41,85 +41,165 @@ See the [SRFI document](http://srfi.schemers.org/srfi-69/srfi-69.html) for more
- [`string-ci-hash`](#string-ci-hash)
- [`hash-by-identity`](#hash-by-identity)
#make-hash-table
# make-hash-table
(make-hash-table)
(make-hash-table equal?)
(make-hash-table equal? hash)
(make-hash-table equal? hash size)
Create a new hash table.
#hash-table?
# hash-table?
(hash-table? obj)
Determine if the given object is a hash table.
#alist->hash-table
# alist->hash-table
(alist->hash-table alist)
(alist->hash-table alist equal?)
(alist->hash-table alist equal? hash)
Convert given association list to a hash table.
#hash-table-equivalence-function
# hash-table-equivalence-function
(hash-table-equivalence-function hash-table)
Returns the equivalence predicate used for keys of hash-table.
#hash-table-hash-function
# hash-table-hash-function
(hash-table-hash-function hash-table)
Returns the hash function used for keys of hash-table.
#hash-table-ref
# hash-table-ref
(hash-table-ref hash-table key)
(hash-table-ref hash-table key thunk)
This procedure returns the value associated to key in hash-table. If no value is associated to key and thunk is given, it is called with no arguments and its value is returned.
#hash-table-ref/default
# hash-table-ref/default
(hash-table-ref/default hash-table key default)
Return the value associated to `key` in the hash table, or `default` if the key is not found.
#hash-table-set!
# hash-table-set!
(hash-table-set! hash-table key value)
Sets the `value` associated to `key` in the given hash table.
#hash-table-delete!
# hash-table-delete!
(hash-table-delete! hash-table key)
Removes any value association for `key` in the given hash table.
#hash-table-exists?
# hash-table-exists?
(hash-table-exists? hash-table key)
Determines if the given key exists in the hash table.
#hash-table-update!
# hash-table-update!
(hash-table-update! hash-table key function)
(hash-table-update! hash-table key function thunk)
#hash-table-update!/default
# hash-table-update!/default
(hash-table-update!/default hash-table key function default)
#hash-table-size
# hash-table-size
(hash-table-size hash-table)
Return the number of associations in the hash table.
#hash-table-keys
# hash-table-keys
(hash-table-keys hash-table)
Return a list of keys in the hash table.
#hash-table-values
# hash-table-values
(hash-table-values hash-table)
Return a list of values in the hash table.
#hash-table-walk
# hash-table-walk
(hash-table-walk hash-table proc)
proc should be a function taking two arguments, a key and a value. This procedure calls proc for each association in hash-table, giving the key of the association as key and the value of the association as value. The results of proc are discarded.
#hash-table-fold
# hash-table-fold
(hash-table-fold hash-table f init-value)
This procedure calls f for every association in hash-table with three arguments: the key of the association key, the value of the association value, and an accumulated value, val. val is init-value for the first invocation of f, and for subsequent invocations of f, the return value of the previous invocation of f. The value final-value returned by hash-table-fold is the return value of the last invocation of f.
#hash-table->alist
# hash-table->alist
(hash-table->alist hash-table)
Return an association list using the keys and values from the hash table.
#hash-table-copy
# hash-table-copy
(hash-table-copy hash-table)
Return a new hash table with the same data as the original.
#hash-table-merge!
# hash-table-merge!
(hash-table-merge! hash-table1 hash-table2)
Adds all mappings in hash-table2 into hash-table1 and returns the resulting hash table.
#hash
# hash
(hash object)
(hash object bound)
Return a hash value for object in the range `0` to `bound`.
#string-hash
# string-hash
(string-hash string)
(string-hash string bound)
Same as `hash` except the argument must be a string.
#string-ci-hash
# string-ci-hash
(string-ci-hash string)
(string-ci-hash string bound)
Case insensitive version of `string-hash`.
#hash-by-identity
# hash-by-identity
(hash-by-identity object)
(hash-by-identity object bound)
The same as `hash`, except that this function is only guaranteed to be acceptable for `eq?`.