Packages by Category

Interactive programs | Visualization | Embedded languages | Logic programming | Data structures | User interface | Networking | Control | Binding constructs and setters | String operations | Input/Output | System functions | Time functions | Set operations | List operations | Sorting | Graph operations | Vector operations | Math operations | Modules | Miscellanea | Stand-alone programs | Test suites

Interactive programs

help.scm: Online help system
prolog.scm: Tiny PROLOG interpreter

Visualization

char-canvas.scm: Character-based canvas
char-plot.scm: Character-based graph plotter
draw-tree.scm: Draw S-expressions in box notation
pretty-print.scm: Pretty printer
runtime-stats.scm: Gather runtime statistics

Embedded languages

amb.scm: McCarthy's ambivalence operator
amk.scm: Embed logic programming into Scheme
matcher.scm: Pattern-based procedure dispatch
programp.scm: Check Scheme program syntax
prolog.scm: Tiny PROLOG interpreter
s9sos.scm: S9fES Simple Object System
syntax-rules.scm: Generate syntax transformers

Logic programming

amb.scm: McCarthy's ambivalence operator
amk.scm: Embed logic programming into Scheme
prolog.scm: Tiny PROLOG interpreter

Data structures

array.scm: Array type and operations
define-structure.scm: Define structure types
hash-table.scm: Hash tables
queue.scm: Queue data structure and operations
records.scm: ML-style records
rb-tree.scm: Red-Black Trees
s9sos.scm: S9fES Simple Object System
streams.scm: Purely functional lazy streams

User interface

curses.scm: S9fES Curses interface
get-line.scm: Edit lines of text interactively
keyword-value.scm: Extract keyword values from argument lists
parse-optionsb.scm: Parse command line options

Networking

inet-server.scm: Run an internet server
split-url.scm: Split an URL string into individual parts
url-decode.scm: Decode URL-encoded strings

Control

and-letstar.scm: Guarded LET*
catch.scm: Handle exceptions
cond-expand.scm: Simple feature-based conditional expansion
letcc.scm: Bind current continuation
matcher.scm: Pattern-based procedure dispatch
memoize.scm: Function memoization
string-map.scm: Map procedures over strings
tagbody.scm: Common Lisp TAGBODY
threads.scm: Cooperative multithreading
tree-map.scm: Map functions over trees
type-case.scm: Type-based dispatch
vector-map.scm: Map procedures over vectors
when.scm: Conditional evaluation without alternative
while.scm: Unbounded looping constructs

Binding constructs and setters

and-letstar.scm: Guarded LET*
fluid-let-sr.scm: Change values dynamically
fluid-let.scm: Change values dynamically
letrecstar.scm: Sequential LETREC
setters.scm: Inc!, swap!, push! and friends

String operations

basename.scm: Extract the base name from a path
dirname.scm: Extract the directory part of a path
format-time.scm: Convert time specification to readable string
format.scm: Common Lisp-style text formatter
htmlify-char.scm: Convert text to HTML
integer-to-binary-string.scm: Integer to binary string conversion
mode-to-string.scm: Convert Unix file mode to readable string
loutify-char.scm: Convert text to Lout input
read-from-string.scm: Read S-expression from string
regex.scm: Regular expression matcher
split-url.scm: Split an URL string into individual parts
string-case.scm: Convert strings to upper/lower case
string-digest.scm: Create digests of strings
string-expand.scm: Expand tabs to spaces
string-find-last.scm: Simple string search (backward)
string-find.scm: Simple string search (forward)
string-last-position.scm: Find last position of substring
string-locate.scm: Fast string search
string-map.scm: Map procedures over strings
string-parse.scm: Tokenize strings
string-position.scm: Find first position of substring
string-prefixeqp.scm: Check string for prefix
string-reverse.scm: Reverse strings
string-scan.scm: Find characters in strings
string-split.scm: Split strings
string-tools.scm: String tools
string-translate.scm: Translate characters
string-unsplit.scm: Concatenate strings
write-to-string.scm: Write S-expression to string

Input/Output

append-to-output-file.scm: Open files for appending
displaystar.scm: Display multiple objects
flush-output-port.scm: Synchronize output ports
format.scm: Common Lisp-style text formatter
get-line.scm: Edit lines of text interactively
read-file.scm: Read all lines of a text file
read-from-string.scm: Read S-expression from string
read-line.scm: Read lines from a text file
standard-error.scm: Write output to stderr descriptor
write-to-string.scm: Write S-expression to string

System functions

basename.scm: Extract the base name from a path
dirname.scm: Extract the directory part of a path
find-help-path.scm: Locate the S9fES online help pages
find-help.scm: Search S9fES online help pages
format-time.scm: Convert time specification to readable string
leap-yearp.scm: Check if a year is a leap year
mode-to-string.scm: Convert Unix file mode to readable string
name-to-file-name.scm: Convert names to safe file names
parse-optionsb.scm: Parse command line options
search-path.scm: Search for an executable in shell search path
spawn-command.scm: Spawn a child process
spawn-shell-command.scm: Spawn a shell command
time-to-unix-time.scm: Convert Unix time to time spec
unix-time-to-time.scm: Convert time spec to Unix time

Time functions

format-time.scm: Convert time specification to readable string
leap-yearp.scm: Check if a year is a leap year
proper-timep.scm: Check whether a time specification is sound
runtime-stats.scm: Gather runtime statistics
time-ops.scm: Date and time operations
time-to-unix-time.scm: Convert Unix time to time spec
time.scm: Measure execution time
unix-time-to-time.scm: Convert time spec to Unix time

Set operations

adjoin.scm: Add elements to sets
combine.scm: Generate combinations of sets
exists.scm: Existential quantifier
for-all.scm: Universal quantifier
intersection.scm: Intersection of sets
permute.scm: Generate permutations of sets
set-difference.scm: Difference between sets
subsetp.scm: Test whether a set is a subset of another
union.scm: Union of sets

List operations

appendb.scm: Append lists destructively
assp.scm: Find first member of an alist satisfying a predicate
collect.scm: Collect related elements from lists
duplicates.scm: Find duplicate members in lists
filter.scm: Extract objects from lists
flatten.scm: Convert trees to flat lists
get-prop.scm: Property list procedures
group.scm: Group lists in tuples
iota.scm: Create numeric ranges
list-to-set.scm: Convert list to set
list-copy.scm: Copy the spine of a list
listq.scm: Create list of quoted objects
memp.scm: Find first list member satisfying a predicate
merge.scm: Merge lists
mergesort.scm: Sort elements using mergesort
partition.scm: Partition lists
position.scm: Find positions of list elements
setters.scm: Inc!, swap!, push! and friends
quicksort.scm: Sort elements using Quicksort
random-sort.scm: Generate random permutations
remove.scm: Remove members from lists
replace.scm: Replace members in pairs
split.scm: Split a list into two
sublist.scm: Extract sub-lists
substitute.scm: Substitute values for symbols
take.scm: Copy leftmost elements of a list
unsort.scm: Unsort lists

Sorting

mergesort.scm: Sort elements using mergesort
quicksort.scm: Sort elements using Quicksort
random-sort.scm: Generate random permutations
sort.scm: Sort lists
unsort.scm: Unsort lists

Graph operations

count.scm: Count atomic members of pairs
depth.scm: Compute depth of an object
equal-cip.scm: Compare objects case-insensitively
t-sort.scm: Topological sort
tree-copy.scm: Copy cons structures
tree-equalp.scm: Compare cons structures
tree-map.scm: Map functions over trees

Vector operations

subvector.scm: Extract sub-vectors
vector-map.scm: Map procedures over vectors

Math operations

bitops.scm: Fast small-magnitude bit operators
bitwise-ops.scm: Bitwise logic operators
cdf.scm: Cumulative Distribution Function
erf.scm: Gauss error function
factor.scm: Compute prime factors
factorial.scm: Compute factorials
hyper.scm: Hyper operator
integer-sqrt.scm: Compute the integer part of a square root
iota.scm: Create numeric ranges
mean.scm: Arithmetic mean (average)
median.scm: Statistical median (middle value)
mode.scm: Statistical mode (most frequent values) of a sample
make-partitions.scm: Compute number-theoretic partitions
ndf.scm: Normal Distribution Function (probability density)
quartile.scm: Quartiles of a sample
random.scm: Generate pseudo-random numbers
range.scm: Range of a sample (minimal/maximal value)
sieve.scm: Find prime numbers
stddev.scm: Standard deviation
sum.scm: Compute sums over ranges
t-sort.scm: Topological sort
transpose.scm: Transpose matrixes
variance.scm: Variance

Modules

package.scm: First-class packages
simple-modules.scm: Simple module syntax

Miscellanea

explode.scm: Explode symbols
id.scm: Identity, truth, and falsity functions
implode.scm: Implode lists to symbols
symbols.scm: Lists of R4RS and S9fES Scheme symbols

Stand-alone programs

advgen.scm: Generate HTML text adventures
bottles.scm: Generate the 99-bottles lyrics using syntax-rules
c2html.scm: Render C code in HTML
cols.scm: Format input in two columns
dupes.scm: Find duplicate file names
edoc.scm.edoc: Embedded documentation processor
htmlify.scm: Convert plain text to HTML
s9help.scm: Find and display S9fES help pages
s9hts.scm: Hypertext server
s9resolve.scm: Resolve S9fES library references
scm2html.scm: Render Scheme code in HTML
scmpp.scm: PRETTY-PRINT command line wrapper
soccat.scm: Connect to remote systems
zebra.scm: Zebra puzzle (using AMK)

Test suites

libtest.scm: S9fES library test suite
realtest.scm: Real number tests
srtest.scm: S9fES syntax-rules tests
systest.scm: S9fES Unix extension test suite
test.scm: S9fES core test suite

contact