This commit is contained in:
Justin Ethier 2017-02-10 23:18:09 +00:00
parent acad2ca2bf
commit 0f266b883a
3 changed files with 88 additions and 5 deletions

View file

@ -36,19 +36,22 @@ This section of the Cyclone API is based on the [R<sup>7</sup>RS Scheme Specific
Cyclone supports the following [Scheme Requests for Implementation (SRFI)](http://srfi.schemers.org/) libraries. Detailed information is available in the linked SRFI page as well as the provided Cyclone API:
- [`srfi 1`](api/srfi/1) - [List Library](http://srfi.schemers.org/srfi-1/srfi-1.html)
- [`srfi 1`](api/srfi/1) - [List library](http://srfi.schemers.org/srfi-1/srfi-1.html)
- [`srfi 2`](api/srfi/2) - [`and-let*`](http://srfi.schemers.org/srfi-2/srfi-2.html)
- [`srfi 8`](api/srfi/8) - [`receive`: Binding to multiple values](http://srfi.schemers.org/srfi-8/srfi-8.html) - Included as part of `scheme base`.
- [`srfi 18`](api/srfi/18) - [Multithreading support](http://srfi.schemers.org/srfi-18/srfi-18.html)
- [`srfi 27`](api/srfi/27) - [Sources of random bits](http://srfi.schemers.org/srfi-27/srfi-27.html)
- [`srfi 28`](api/srfi/28) - [Basic format strings](http://srfi.schemers.org/srfi-28/srfi-28.html)
- [`srfi 60`](api/srfi/60) - [Integers as bits](http://srfi.schemers.org/srfi-60/srfi-60.html)
- [`srfi 69`](api/srfi/69) - [Basic hash tables](http://srfi.schemers.org/srfi-69/srfi-69.html)
- [`srfi 106`](api/srfi/106) - [Basic socket interface](http://srfi.schemers.org/srfi-106/srfi-106.html)
- [`srfi 111`](api/srfi/111) - [Boxes](http://srfi.schemers.org/srfi-111/srfi-111.html)
- [`srfi 113`](api/srfi/113) - [Sets and bags](http://srfi.schemers.org/srfi-113/srfi-113.html)
- [`srfi 117`](api/srfi/117) - [Mutable queues](http://srfi.schemers.org/srfi-117/srfi-117.html)
- [`srfi 121`](api/srfi/121) - [Generators](http://srfi.schemers.org/srfi-121/srfi-121.html)
- [`srfi 128`](api/srfi/128) - [Comparators](http://srfi.schemers.org/srfi-128/srfi-128.html)
- [`srfi 132`](api/srfi/132) - [Sort Libraries](http://srfi.schemers.org/srfi-132/srfi-132.html)
- [`srfi 133`](api/srfi/133) - [Vector Library (R7RS-compatible)](http://srfi.schemers.org/srfi-133/srfi-133.html)
- [`srfi 132`](api/srfi/132) - [Sort libraries](http://srfi.schemers.org/srfi-132/srfi-132.html)
- [`srfi 133`](api/srfi/133) - [Vector library (R7RS-compatible)](http://srfi.schemers.org/srfi-133/srfi-133.html)
# Cyclone Libraries
@ -188,6 +191,7 @@ This section is an alphabetic listing of all the functions, objects, and macros
[`and-let*`](api/srfi/2#and-let)
[`and`](api/scheme/base#and)
[`angle`](api/scheme/complex#angle)
[`any-bits-set?`](api/srfi/60#any-bits-set)
[`any`](api/scheme/base#any)
[`any`](api/srfi/1#any)
[`app->args `](api/scheme/cyclone/transforms#app-args)
@ -200,6 +204,8 @@ This section is an alphabetic listing of all the functions, objects, and macros
[`append-reverse`](api/srfi/1#append-reverse)
[`append`](api/scheme/base#append)
[`apply `](api/primitives#apply)
[`arithmetic-shift`](api/srfi/60#ash)
[`ash`](api/srfi/60#ash)
[`asin`](api/scheme/inexact#asin)
[`assoc`](api/scheme/base#assoc)
[`assq-remove-key `](api/scheme/cyclone/transforms#assq-remove-key)
@ -283,15 +289,26 @@ This section is an alphabetic listing of all the functions, objects, and macros
[`begin->exps `](api/scheme/cyclone/transforms#begin-exps)
[`begin? `](api/scheme/cyclone/util#begin)
[`begin`](api/scheme/base#begin)
[`bit-count`](api/srfi/60#bit-count)
[`bit-field`](api/srfi/60#bit-field)
[`bit-set?`](api/srfi/60#bit-set)
[`bitwise-and`](api/srfi/60#bitwise-and)
[`bitwise-if`](api/srfi/60#bitwise-if)
[`bitwise-ior`](api/srfi/60#bitwise-ior)
[`bitwise-merge`](api/srfi/60#bitwise-merge)
[`bitwise-not`](api/srfi/60#bitwise-not)
[`bitwise-xor`](api/srfi/60#bitwise-xor)
[`boolean-hash `](api/srfi/128#boolean-hash)
[`boolean=?`](api/scheme/base#boolean)
[`boolean? `](api/primitives#boolean)
[`booleans->integer`](api/srfi/60#booleans-integer)
[`box?`](api/srfi/111#box-1)
[`box`](api/srfi/111#box)
[`break!`](api/srfi/1#break-1)
[`break`](api/srfi/1#break)
[`built-in-syms `](api/scheme/cyclone/transforms#built-in-syms)
[`bytevector `](api/primitives#bytevector)
[`bytevector->generator`](api/srfi/121#bytevector-generator)
[`bytevector-append `](api/primitives#bytevector-append)
[`bytevector-copy!`](api/scheme/base#bytevector-copy-1)
[`bytevector-copy`](api/scheme/base#bytevector-copy)
@ -405,6 +422,8 @@ This section is an alphabetic listing of all the functions, objects, and macros
[`cons `](api/primitives#cons)
[`cons*`](api/srfi/1#cons)
[`const? `](api/scheme/cyclone/util#const)
[`copy-bit-field`](api/srfi/60#copy-bit-field)
[`copy-bit`](api/srfi/60#copy-bit)
[`cos`](api/scheme/inexact#cos)
[`count`](api/srfi/1#count)
[`cps-convert `](api/scheme/cyclone/transforms#cps-convert)
@ -519,6 +538,7 @@ This section is an alphabetic listing of all the functions, objects, and macros
[`find-tail`](api/srfi/1#find-tail)
[`find`](api/srfi/1#find)
[`finite?`](api/scheme/inexact#finite)
[`first-set-bit`](api/srfi/60#first-set-bit)
[`first`](api/srfi/1#first)
[`flatten `](api/scheme/cyclone/util#flatten)
[`floor-quotient`](api/scheme/base#floor-quotient)
@ -538,14 +558,40 @@ This section is an alphabetic listing of all the functions, objects, and macros
[`free-vars `](api/scheme/cyclone/transforms#free-vars)
- - -
[`gappend`](api/srfi/121#gappend)
[`gcd`](api/scheme/base#gcd)
[`gcombine`](api/srfi/121#gcombine)
[`gcons*`](api/srfi/121#gcons)
[`gdelete-neighbor-dups`](api/srfi/121#gdelete-neighbor-dups)
[`gdelete`](api/srfi/121#gdelete)
[`gdrop-while`](api/srfi/121#gdrop-while)
[`gdrop`](api/srfi/121#gdrop)
[`generator->list`](api/srfi/121#generator-list)
[`generator->reverse-list`](api/srfi/121#generator-reverse-list)
[`generator->string`](api/srfi/121#generator-string)
[`generator->vector!`](api/srfi/121#generator-vector!)
[`generator->vector`](api/srfi/121#generator-vector)
[`generator-any`](api/srfi/121#generator-any)
[`generator-count`](api/srfi/121#generator-count)
[`generator-every`](api/srfi/121#generator-every)
[`generator-find`](api/srfi/121#generator-find)
[`generator-fold`](api/srfi/121#generator-fold)
[`generator-for-each`](api/srfi/121#generator-for-each)
[`generator-unfold`](api/srfi/121#generator-unfold)
[`generator`](api/srfi/121#generator)
[`gensym `](api/scheme/cyclone/util#gensym)
[`get-environment-variable`](api/scheme/process-context#get-environment-variable)
[`get-environment-variables`](api/scheme/process-context#get-environment-variables)
[`get-macros `](api/scheme/cyclone/transforms#get-macros)
[`get-output-bytevector`](api/scheme/base#get-output-bytevector)
[`get-output-string`](api/scheme/base#get-output-string)
[`gfilter`](api/srfi/121#gfilter)
[`gindex`](api/srfi/121#gindex)
[`global-vars `](api/scheme/cyclone/transforms#global-vars)
[`gremove`](api/srfi/121#gremove)
[`gselect`](api/srfi/121#gselect)
[`gtake-while`](api/srfi/121#gtake-while)
[`gtake`](api/srfi/121#gtake)
[`guard`](api/scheme/base#guard)
- - -
@ -590,6 +636,8 @@ This section is an alphabetic listing of all the functions, objects, and macros
[`input-port?`](api/scheme/base#input-port)
[`insert `](api/scheme/cyclone/transforms#insert)
[`integer->char `](api/primitives#integer-char)
[`integer->list`](api/srfi/60#integer-list)
[`integer-length`](api/srfi/60#integer-length)
[`integer? `](api/primitives#integer)
[`iota`](api/srfi/1#iota)
[`ip-protocol`](api/srfi/106#ip-protocol)
@ -657,6 +705,8 @@ This section is an alphabetic listing of all the functions, objects, and macros
[`library?`](api/scheme/cyclone/libraries#library)
[`list->bag `](api/srfi/113#list-bag)
[`list->bag!`](api/srfi/113#list-bag-1)
[`list->generator`](api/srfi/121#list-generator)
[`list->integer`](api/srfi/60#list-integer)
[`list->lambda-formals `](api/scheme/cyclone/transforms#list-lambda-formals)
[`list->pair `](api/scheme/cyclone/transforms#list-pair)
[`list->set `](api/srfi/113#list-set)
@ -712,8 +762,16 @@ This section is an alphabetic listing of all the functions, objects, and macros
[`list?`](api/scheme/base#list-1)
[`list`](api/scheme/base#list)
[`load`](api/scheme/load#load)
[`log2-binary-factors`](api/srfi/60#log2-binary-factors)
[`log`](api/scheme/inexact#log)
[`logbit?`](api/srfi/60#logbit)
[`logcount`](api/srfi/60#logcount)
[`logior`](api/srfi/60#logior)
[`lognot`](api/srfi/60#lognot)
[`logtest`](api/srfi/60#logtest)
[`logxor`](api/srfi/60#logxor)
[`lset-adjoin`](api/srfi/1#lset-adjoin)
[`lset-diff+intersection!`](api/srfi/1#lset-diffintersection-1)
[`lset-diff+intersection`](api/srfi/1#lset-diffintersection)
[`lset-difference!`](api/srfi/1#lset-difference-1)
[`lset-difference`](api/srfi/1#lset-difference)
@ -740,12 +798,15 @@ This section is an alphabetic listing of all the functions, objects, and macros
[`make-comparator `](api/srfi/128#make-comparator)
[`make-condition-variable`](api/srfi/18#make-condition-variable)
[`make-constructor`](api/scheme/base#make-constructor)
[`make-coroutine-generator`](api/srfi/121#make-coroutine-generator)
[`make-default-comparator `](api/srfi/128#make-default-comparator)
[`make-eq-comparator `](api/srfi/128#make-eq-comparator)
[`make-equal-comparator `](api/srfi/128#make-equal-comparator)
[`make-eqv-comparator `](api/srfi/128#make-eqv-comparator)
[`make-for-each-generator`](api/srfi/121#make-for-each-generator)
[`make-getter`](api/scheme/base#make-getter)
[`make-hash-table`](api/srfi/69#make-hash-table)
[`make-iota-generator`](api/srfi/121#make-iota-generator)
[`make-list-comparator `](api/srfi/128#make-list-comparator)
[`make-list-queue`](api/srfi/117#make-list-queue)
[`make-list`](api/scheme/base#make-list)
@ -756,12 +817,14 @@ This section is an alphabetic listing of all the functions, objects, and macros
[`make-polar`](api/scheme/complex#make-polar)
[`make-promise`](api/scheme/lazy#make-promise)
[`make-random-source`](api/srfi/27#make-random-source)
[`make-range-generator`](api/srfi/121#make-range-generator)
[`make-rectangular`](api/scheme/complex#make-rectangular)
[`make-server-socket`](api/srfi/106#make-server-socket)
[`make-setter`](api/scheme/base#make-setter)
[`make-string`](api/scheme/base#make-string)
[`make-thread`](api/srfi/18#make-thread)
[`make-type-predicate`](api/scheme/base#make-type-predicate)
[`make-unfold-generator`](api/srfi/121#make-unfold-generator)
[`make-vector `](api/primitives#make-vector)
[`make-vector-comparator `](api/srfi/128#make-vector-comparator)
[`mangle `](api/scheme/cyclone/util#mangle)
@ -882,8 +945,10 @@ This section is an alphabetic listing of all the functions, objects, and macros
[`remove`](api/srfi/1#remove)
[`reverse!`](api/srfi/1#reverse)
[`reverse-list->vector`](api/srfi/133#reverse-list-vector)
[`reverse-vector->generator`](api/srfi/121#reverse-vector-generator)
[`reverse-vector->list`](api/srfi/133#reverse-vector-list)
[`reverse`](api/scheme/base#reverse)
[`rotate-bit-field`](api/srfi/60#rotate-bit-field)
[`round`](api/scheme/base#round)
- - -
@ -970,6 +1035,7 @@ This section is an alphabetic listing of all the functions, objects, and macros
[`split-at`](api/srfi/1#split-at)
[`sqrt`](api/scheme/inexact#sqrt)
[`square`](api/scheme/base#square)
[`string->generator`](api/srfi/121#string-generator)
[`string->list`](api/scheme/base#string-list)
[`string->number `](api/primitives#string-number)
[`string->symbol `](api/primitives#string-symbol)
@ -1055,7 +1121,6 @@ This section is an alphabetic listing of all the functions, objects, and macros
[`trace:error `](api/scheme/cyclone/transforms#traceerror)
[`trace:info `](api/scheme/cyclone/transforms#traceinfo)
[`trace:warn `](api/scheme/cyclone/transforms#tracewarn)
[`tree-copy`](api/srfi/1#tree-copy)
[`truncate-quotient`](api/scheme/base#truncate-quotient)
[`truncate-remainder`](api/scheme/base#truncate-remainder)
[`truncate/`](api/scheme/base#truncate-1)
@ -1077,6 +1142,7 @@ This section is an alphabetic listing of all the functions, objects, and macros
- - -
[`values`](api/scheme/base#values)
[`vector->generator`](api/srfi/121#vector-generator)
[`vector->list`](api/scheme/base#vector-list)
[`vector->string`](api/scheme/base#vector-string)
[`vector-any`](api/srfi/133#vector-any)
@ -1120,7 +1186,6 @@ This section is an alphabetic listing of all the functions, objects, and macros
[`vector-unfold!`](api/srfi/133#vector-unfold)
[`vector-unfold-right!`](api/srfi/133#vector-unfold-right)
[`vector-unfold-right`](api/srfi/133#vector-unfold-right)
[`vector-unfold`](api/srfi/133#vector-unfold)
[`vector=`](api/srfi/133#vector)
[`vector? `](api/primitives#vector)
[`vector`](api/scheme/base#vector)

View file

@ -9,6 +9,12 @@ The `(srfi 18)` library provides multithreading support.
See the [Multithreading support SRFI documentation](http://srfi.schemers.org/srfi-18/srfi-18.html) for more information.
## Limitations
Currently, ``thread-join!`` is not provided. While this is not an essential
primitive and can be worked around, code that relies on ``thread-join!`` being
present in this implementation will fail to compile.
- [`thread?`](#thread)
- [`make-thread`](#make-thread)
- [`thread-name`](#thread-name)

View file

@ -16,6 +16,18 @@ Hash tables are widely recognised as a fundamental data structure for a wide var
See the [SRFI document](http://srfi.schemers.org/srfi-69/srfi-69.html) for more information.
## Limitations
Hash table size must be strictly less than 536,870,909.
The default implementation of record hashing is severely suboptimal - if you
want to store records in a hash table, use a custom hashing function.
This implementation does not distinguish ``hash`` and ``hash-by-identity``.
Additionally, symbol hashing is done by string-hashing the result of
``symbol->string`` on the symbol, making symbols identical to strings for the
purpose of hash table key performance.
## Type constructors and predicate
[`make-hash-table`](#make-hash-table)
[`hash-table?`](#hash-table)