* Added the user guide to the repository.
This commit is contained in:
parent
63ddb1b479
commit
3cca074ca2
|
@ -0,0 +1,18 @@
|
|||
|
||||
|
||||
#dist_doc_DATA=doc/ikarus-users-guide.pdf
|
||||
EXTRA_DIST = ikarus-users-guide.tex ikarus-users-guide.bib ikarus-users-guide.pdf
|
||||
|
||||
TEX=xelatex -output-driver="xdvipdfmx -q -E"
|
||||
|
||||
ikarus-users-guide.pdf: ikarus-users-guide.tex ikarus-users-guide.bib
|
||||
$(TEX) ikarus-users-guide
|
||||
makeindex ikarus-users-guide
|
||||
bibtex ikarus-users-guide
|
||||
$(TEX) ikarus-users-guide
|
||||
$(TEX) ikarus-users-guide
|
||||
|
||||
all: ikarus-users-guide.pdf
|
||||
|
||||
clean:
|
||||
rm -f *.aux *.log *.toc *.out *.idx *.ind *.ilg
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
@article{ r6rs,
|
||||
author = "Michael Sperber and R. Kent Dybvig and Matthew Flatt
|
||||
and Anton Van Straaten {(Editors)}",
|
||||
title = "Revised$^{6}$ Report on the Algorithmic Language {Scheme}",
|
||||
year = "2007"
|
||||
}
|
||||
|
||||
|
||||
@inproceedings{dybvig93guardians,
|
||||
author = {R. Kent Dybvig and Carl Bruggeman and David Eby},
|
||||
title = {Guardians in a generation-based garbage collector},
|
||||
booktitle = "PLDI '93",
|
||||
pages = "207-216",
|
||||
month = jun,
|
||||
year = 1993,
|
||||
annote = {Introduces guardians and describes the implementation of
|
||||
guardians and weak pairs in Chez Scheme.}
|
||||
}
|
||||
|
||||
@techreport{dybvig:sm,
|
||||
author = {R. Kent Dybvig and David Eby and Carl Bruggeman},
|
||||
title = {Don't stop the {BiBOP}: Flexible and efficient storage
|
||||
management for dynamically-typed languages},
|
||||
institution = "Indiana University",
|
||||
number = 400,
|
||||
month = "March",
|
||||
year = 1994,
|
||||
annote = {Describes Chez Scheme's storage management system.}
|
||||
}
|
||||
|
||||
@inproceedings{ghuloum07hashtables,
|
||||
author = {Abdulaziz Ghuloum and R. Kent Dybvig},
|
||||
title = {Generation Friendly Eq Hash Tables},
|
||||
booktitle = "Workshop on Scheme and Functional Programming",
|
||||
pages = "207-216",
|
||||
month = sep,
|
||||
year = 2007
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,616 @@
|
|||
|
||||
\documentclass[onecolumn, 12pt, twoside, openright, dvipdfm]{book}
|
||||
\usepackage{fontspec}
|
||||
|
||||
\defaultfontfeatures{Scale=MatchLowercase}
|
||||
\setmainfont[Mapping=tex-text]{Cochin}
|
||||
%\setmainfont[Mapping=tex-text]{Palatino}
|
||||
\setsansfont[Mapping=tex-text]{Geneva}
|
||||
\setmonofont{Monaco}
|
||||
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{makeidx}
|
||||
\makeindex
|
||||
|
||||
\usepackage[dvipdfm,CJKbookmarks,bookmarks=true,bookmarksopen=true]{hyperref}
|
||||
\hypersetup{
|
||||
pdftitle={},
|
||||
pdfauthor={Abdulaziz Ghuloum},
|
||||
pdfkeywords={},
|
||||
bookmarksnumbered=true,
|
||||
%pagebackref=true,
|
||||
breaklinks=true,
|
||||
% pdfview=FitH, % Or try pdfstartview={FitV}, This lead to uncorrect bookmarks
|
||||
urlcolor=cyan,
|
||||
colorlinks=true,
|
||||
citecolor=blue, %citeref's color
|
||||
linkcolor=blue,
|
||||
}
|
||||
|
||||
\usepackage{rotating}
|
||||
\usepackage{multicol,ragged2e}
|
||||
|
||||
%\pagestyle{fancy}
|
||||
|
||||
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
|
||||
\fancyhf{}
|
||||
\fancyhead[LE,RO]{\bfseries\thepage}
|
||||
\fancyhead[LO]{\bfseries\rightmark}
|
||||
\fancyhead[RE]{\bfseries\leftmark}
|
||||
\renewcommand{\headrulewidth}{0pt}
|
||||
\renewcommand{\footrulewidth}{0pt}
|
||||
\renewcommand{\headheight}{15pt}
|
||||
|
||||
\newcommand{\coderefpage}[1]{figure~\ref{#1}, p.~\pageref{#1}}
|
||||
\newcommand{\figrefpage}[1]{figure~\ref{#1}, p.~\pageref{#1}}
|
||||
|
||||
\newcommand{\coderef}[1]{figure~\ref{#1}}
|
||||
\newcommand{\figref}[1]{figure~\ref{#1}}
|
||||
|
||||
\newcommand{\secref}[1]{section~\ref{#1}}
|
||||
\newcommand{\rnrs}[1]{R$^{\mathrm{#1}}$RS}
|
||||
|
||||
\newcommand{\BoxedText}[2]{
|
||||
\vspace{.05in}
|
||||
\begin{center}
|
||||
\begin{tabular}{|p{4.6in}|} {\large \emph{#1}} #2 \end{tabular}
|
||||
\end{center}
|
||||
\vspace{.05in}
|
||||
}
|
||||
|
||||
\newcommand{\testfile}[2]{\texttt{tests-{\ref{#1}}-{#2}.ss}}
|
||||
|
||||
\newenvironment{Language}
|
||||
{
|
||||
\begin{center}
|
||||
\begin{tabular}{|p{4.5in}|} {\large \emph{Input Language:}}
|
||||
\begin{center}
|
||||
\begin{tabular}{@{}r@{ }c@{ }l@{}}
|
||||
}{
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
|
||||
|
||||
\frontmatter
|
||||
\title{Ikarus Scheme User's Guide}
|
||||
|
||||
\author{Abdulaziz Ghuloum}
|
||||
|
||||
\pagestyle{empty}
|
||||
|
||||
\mbox{}
|
||||
\vspace{3in}
|
||||
|
||||
{
|
||||
\fontsize{66}{66}
|
||||
\fontspec{Hoefler Text Italic}
|
||||
\begin{center}
|
||||
Ikarus Scheme User's Guide
|
||||
\end{center} }
|
||||
\noindent
|
||||
\rule{\textwidth}{6pt}
|
||||
{\fontsize{18}{18}
|
||||
\fontspec{Hoefler Text Italic}
|
||||
\hfill{}
|
||||
Volume 1: Quick Start (Preliminary Document)
|
||||
}
|
||||
\vfill
|
||||
{
|
||||
\fontsize{24}{24}
|
||||
\fontspec{Hoefler Text Italic}
|
||||
\hfill{} Abdulaziz Ghuloum
|
||||
}
|
||||
|
||||
{
|
||||
\fontsize{18}{18}
|
||||
\fontspec{Hoefler Text Italic}
|
||||
\hfill{} \today
|
||||
}
|
||||
|
||||
\newpage
|
||||
\mbox{}
|
||||
\vfill{}
|
||||
\noindent
|
||||
Ikarus Scheme User's Guide\\
|
||||
Volume 1: Quick Start (Preliminary Document)\\
|
||||
Copyright \copyright{} 2007, Abdulaziz Ghuloum\\
|
||||
|
||||
\noindent
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU Free Documentation License,
|
||||
Version 1.2 published by the Free Software
|
||||
Foundation; with no Invariant Sections, the Front-Cover Texts
|
||||
being \emph{``Ikarus Scheme User's Guide''}, and
|
||||
no Back-Cover Texts. A copy of the license is included in the
|
||||
section entitled ``GNU Free Documentation License''.
|
||||
|
||||
\newpage
|
||||
|
||||
\pagestyle{fancy}
|
||||
\tableofcontents
|
||||
|
||||
\newpage
|
||||
|
||||
% \chapter{Preface}
|
||||
%
|
||||
% Here\index{Preface, Great One}
|
||||
%
|
||||
%
|
||||
% \begin{verbatim}
|
||||
% (library (foo)
|
||||
% (export x)
|
||||
% (import (rnrs))
|
||||
% (define y 13)
|
||||
% (define-syntax x
|
||||
% (syntax-rules ()
|
||||
% [(_ n) (+ n y)]))
|
||||
% \end{verbatim}
|
||||
|
||||
|
||||
|
||||
|
||||
\mainmatter
|
||||
\setlength{\parindent}{0pt}
|
||||
\setlength{\parskip}{2.0ex plus 0ex minus 0ex}
|
||||
\chapter{Getting Started}
|
||||
\section{Introduction}
|
||||
|
||||
Ikarus Scheme is an implementation of the Scheme programming
|
||||
language\cite{steele:scheme}. The prerelease version of Ikarus
|
||||
implements the majority of the features found in the current
|
||||
standard, the Revised$^6$ report on the algorithmic language
|
||||
Scheme\cite{r6rs}. Subsequent revisions will proceed towards
|
||||
completing the set of \rnrs{6} features.
|
||||
|
||||
The main purpose behind releasing Ikarus early is to give Scheme
|
||||
programmers the opportunity to experiment with the various new
|
||||
features that were newly introduced in \rnrs{6}. The most important
|
||||
of such features is the ability to structure large programs into
|
||||
libraries; where each library extends the language through
|
||||
procedural and syntactic abstractions. Many useful libraries can be
|
||||
written using the currently supported set of \rnrs{6} features
|
||||
including text processing tools, symbolic logic systems,
|
||||
interpreters and compilers, and many mathematical and scientific
|
||||
packages. It is our hope that this release will encourage the
|
||||
Scheme community to write and to share their most useful \rnrs{6}
|
||||
libraries.
|
||||
\newpage
|
||||
|
||||
\section{Technology Overview}
|
||||
|
||||
Ikarus Scheme provides the programmer with many advantages:
|
||||
|
||||
\textbf{Optimizing code generator:} The compiler's backend employs
|
||||
state of the art technologies in code generation that produce fast
|
||||
efficient machine code. When developing computationally intensive
|
||||
programs, one is not constrained by using a slow interpreter.
|
||||
|
||||
\textbf{Fast incremental compilation:} Every library and script is
|
||||
quickly compiled to native machine code. When developing large
|
||||
software, one is not constrained by how slow the batch compiler
|
||||
runs.
|
||||
|
||||
\textbf{Robust and fine-tuned standard libraries:} The standard
|
||||
libraries are written such that they perform as much error checking
|
||||
as required to provide a safe and fast runtime environment.
|
||||
|
||||
\textbf{Multi-generational garbage collector:} The
|
||||
BiBOP\cite{dybvig:sm} based garbage collector used in Ikarus allows
|
||||
the runtime system to expand its memory footprint as needed. Up to
|
||||
four gigabytes of data can be used and unneeded memory is released
|
||||
back to the operating system.
|
||||
|
||||
\textbf{Supports many operating systems:} Ikarus runs on the most
|
||||
popular and widely used operating systems for servers and personal
|
||||
computers. The supported systems include Mac~OS~X,
|
||||
GNU/Linux, and Microsoft Windows.
|
||||
|
||||
|
||||
\section{System Requirements}
|
||||
|
||||
\subsection{Hardware}
|
||||
|
||||
Ikarus Scheme runs on the IA-32 (\emph{x86}) architecture
|
||||
supporting SSE2 extensions. This includes the Athlon 64,
|
||||
Sempron 64, and Turion 64 processors from AMD and the Pentium 4, Xeon,
|
||||
Celeron, Pentium M, Core, and Core2 processors from Intel. The
|
||||
system does not run on Intel Pentium III or earlier
|
||||
processors.
|
||||
|
||||
\subsection{Operating Systems}
|
||||
|
||||
Ikarus is tested under the following operating systems:
|
||||
|
||||
\begin{itemize}
|
||||
\item Mac OS X version 10.4.
|
||||
\item Linux 2.6.18 (Debian, Fedora, Gentoo, and Ubuntu).
|
||||
\item Microsoft Windows XP (using Cygwin 1.5.24).
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Additional Software}
|
||||
|
||||
\begin{itemize}
|
||||
\item\textbf{GMP:} Ikarus uses the GNU Multiple Precision Arithmetic
|
||||
Library (GMP) for some bignum arithmetic operations. To build
|
||||
ikarus from scratch, GMP version 4.2 or better must be installed
|
||||
along with the required header files. Pre-built GMP packages es are
|
||||
available for most operating systems. Alternatively, GMP can be
|
||||
downloaded from \url{http://gmplib.org/}.
|
||||
|
||||
\item\textbf{GCC:} The GNU C Compiler is required to build the ikarus
|
||||
executable (e.g. the garbage collector, loader, and OS-related
|
||||
runtime). GCC versions 4.1 and 4.2 were used successfully to build
|
||||
ikarus.
|
||||
|
||||
\item\textbf{Autoconf and Automake:} The GNU Autoconf (2.59 or better)
|
||||
and GNU Automakei (1.6.3 or better) tools are required if one
|
||||
wishes to modify the ikarus source base. They are not
|
||||
required to build the official release of ikarus.
|
||||
|
||||
\item\textbf{XeLaTeX:} The XeLaTeX typesetting system is required
|
||||
for building the documentation. XeLaTeX (and XeTeX) is an
|
||||
implementation of the LaTeX (and TeX) typesetting system.
|
||||
|
||||
\end{itemize}
|
||||
|
||||
\newpage
|
||||
|
||||
\section{Installation}
|
||||
|
||||
If you are familiar with installing Unix software on your system,
|
||||
then all you need to know is that Ikarus uses the standard
|
||||
installation method found in most other Unix software. Simply run
|
||||
the following commands from the shell:
|
||||
\begin{verbatim}
|
||||
$ tar -zxf ikarus-pre-0-nnn.tar.gz
|
||||
$ cd ikarus-pre-0-nnn
|
||||
$ ./configure [--prefix=path] [CFLAGS=-I/dir] [LDFLAGS=-L/dir]
|
||||
$ make
|
||||
$ make install
|
||||
$
|
||||
\end{verbatim}
|
||||
|
||||
The rest of this section describes the build process in more
|
||||
details. It is targetted to users who are unfamiliar with steps
|
||||
mentioned above.
|
||||
|
||||
\subsection{Installation Details}
|
||||
|
||||
\begin{enumerate}
|
||||
|
||||
\item Download the Ikarus source distribution. The source is
|
||||
distributed as a \texttt{gzip}-compressed \texttt{tar} file
|
||||
(\texttt{ikarus-pre-0-nnn.tar.gz} where \texttt{nnn} is a 3-digit
|
||||
number indicating the current revision). The latest revision can be
|
||||
downloaded from the following URL:\\
|
||||
\url{http://www.cs.indiana.edu/~aghuloum/ikarus/}
|
||||
|
||||
\item Unpack the source distribution package. From your shell
|
||||
command, type:
|
||||
\begin{verbatim}
|
||||
$ tar -zxf ikarus-pre-0-nnn.tar.gz
|
||||
\end{verbatim}
|
||||
This creates the base directory \texttt{ikarus-pre-0-nnn}.
|
||||
|
||||
\item Configure the build system by running the \texttt{configure}
|
||||
script located in the base directory. To do this, type the
|
||||
following commands:
|
||||
\begin{verbatim}
|
||||
$ cd ikarus-pre-0-nnn
|
||||
$ ./configure
|
||||
checking build system type... i386-apple-darwin8.10.1
|
||||
checking host system type... i386-apple-darwin8.10.1
|
||||
...
|
||||
configure: creating ./config.status
|
||||
config.status: creating Makefile
|
||||
config.status: creating src/Makefile
|
||||
config.status: creating scheme/Makefile
|
||||
config.status: creating doc/Makefile
|
||||
config.status: executing depfiles commands
|
||||
$
|
||||
\end{verbatim}
|
||||
|
||||
This configures the system to be built then installed in the
|
||||
system-wide location (binaries are installed in
|
||||
\texttt{/usr/local/bin}) . If you wish to install it
|
||||
in another location (e.g. in your home directory), you can supply
|
||||
a \texttt{--prefix} location to the \texttt{configure} script as
|
||||
follows:
|
||||
|
||||
\begin{verbatim}
|
||||
$ ./configure --prefix=/path/to/installation/location
|
||||
\end{verbatim}
|
||||
|
||||
The \texttt{configure} script will fail if it cannot locate the
|
||||
location where GMP is installed. If running \texttt{configure}
|
||||
fails to locate GMP, you should supply the location in which the GMP
|
||||
header file, \texttt{gmp.h}, and the GMP library file,
|
||||
\texttt{libgmp.so}, are installed. This is done by supplying the
|
||||
two paths in the \texttt{CFLAGS} and \texttt{LDFLAGS} arguments:
|
||||
|
||||
\begin{verbatim}
|
||||
$ ./configure CFLAGS=-I/path/to/include LDFLAGS=-L/path/to/lib
|
||||
\end{verbatim}
|
||||
|
||||
\item Build the system by running:
|
||||
\begin{verbatim}
|
||||
$ make
|
||||
\end{verbatim}
|
||||
This performs two
|
||||
tasks. First, it builds the \texttt{ikarus} executable from the C
|
||||
files located in the \texttt{src} directory. It then uses the
|
||||
\texttt{ikarus} executable and the pre-built
|
||||
\texttt{ikarus.boot.orig} boot file to rebuild the Scheme boot image
|
||||
file \texttt{ikarus.boot} from the Scheme sources located in the
|
||||
\texttt{scheme} directory.
|
||||
|
||||
\item Install Ikarus by typing:
|
||||
\begin{verbatim}
|
||||
$ make install
|
||||
\end{verbatim}
|
||||
If you are installing Ikarus in a system-wide location, you might
|
||||
need to have administrator privileges (use the \texttt{sudo} or
|
||||
\texttt{su} commands).
|
||||
|
||||
\item Test that Ikarus runs from the command line.
|
||||
\begin{verbatim}
|
||||
$ ikarus
|
||||
Ikarus Scheme (Build 2007-10-20)
|
||||
Copyright (c) 2006-2007 Abdulaziz Ghuloum
|
||||
|
||||
>
|
||||
\end{verbatim}
|
||||
If you get the prompt, then Ikarus was successfully installed on
|
||||
your system. You may need to update the \texttt{PATH} variable in
|
||||
your environment to contain the directory in which the
|
||||
\texttt{ikarus} executable was installed.
|
||||
|
||||
Do not delete the \texttt{ikarus-pre-0-nnn} directory from which you
|
||||
configured, built, and installed Ikarus. It will be needed if you
|
||||
decide at a later time to uninstall Ikarus.
|
||||
|
||||
\end{enumerate}
|
||||
|
||||
\subsection{Uninstalling Ikarus}
|
||||
|
||||
To uninstall Ikarus, use the following steps:
|
||||
|
||||
\begin{verbatim}
|
||||
$ cd path/to/ikarus-pre-0-nnn
|
||||
$ make uninstall
|
||||
\end{verbatim}
|
||||
|
||||
\newpage
|
||||
|
||||
\section{\index{Command-line switches}Command-line Switches}
|
||||
|
||||
The \texttt{ikarus} executable recognizes a few command-line
|
||||
switches that influence how Ikarus starts.
|
||||
|
||||
\begin{itemize}
|
||||
|
||||
\item \texttt{ikarus -h}
|
||||
|
||||
The presence of the \texttt{-h} flag causes \texttt{ikarus} to
|
||||
display a help message then exits. The help message summarises the
|
||||
command-line switches. No further action is performed.
|
||||
|
||||
\item \texttt{ikarus -b path/to/boot/file.boot}
|
||||
|
||||
The \texttt{-b} flag (which requires an extra argument) directs
|
||||
\texttt{ikarus} to use the specified boot file as the initial system
|
||||
boot file. \index{Boot files} The boot file is a binary file that
|
||||
contains all the code and data of the Scheme system. In the absence
|
||||
of \texttt{-b} flag, the executable attempts to guess the location
|
||||
of the boot file using the following strategy:
|
||||
\begin{enumerate}
|
||||
|
||||
\item If \texttt{ikarus} was started by supplying an explicit
|
||||
location (e.g. \texttt{/usr/local/bin/ikarus} or \texttt{./ikarus}),
|
||||
then the name of the boot file is the concatenation of a
|
||||
\texttt{.boot} prefix to the executable file name (e.g.
|
||||
\texttt{/usr/local/bin/ikarus.boot} or \texttt{./ikarus.boot}).
|
||||
|
||||
\item Otherwise, \texttt{ikarus} assumes that it was started from a
|
||||
location in the \texttt{PATH} environment variable. In that case,
|
||||
it searches for the location of \texttt{ikarus} in the
|
||||
\texttt{PATH}. If \texttt{ikarus} is found in
|
||||
\texttt{/some/location/ikarus}, then the name of the boot file
|
||||
becomes \texttt{/some/location/ikarus.boot}.
|
||||
|
||||
\item Failing both guesses, \texttt{ikarus} prints an error message
|
||||
and exits.
|
||||
|
||||
\end{enumerate}
|
||||
|
||||
The motivation for this strategy was to allow one to (1) rename the
|
||||
\texttt{ikarus} executable and the corresponding boot file to some
|
||||
new names (e.g. \texttt{my-ikarus} and \texttt{my-ikarus.boot}) without
|
||||
conflicting with other installed versions of Ikarus, and (2)
|
||||
override the location of the boot file for testing and building
|
||||
purposes (e.g. the installation process using one boot file to build
|
||||
another).
|
||||
|
||||
The rest of the command-line arguments are recognized by the
|
||||
standard Scheme run time system. They are processed after the
|
||||
boot file is loaded.
|
||||
|
||||
\item \texttt{ikarus --r6rs-script script-file-name [arguments ...]}
|
||||
|
||||
\index{\rnrs{6} Script} The \texttt{--r6rs-script} argument
|
||||
instructs Ikarus that the supplied file is an \rnrs{6} script. See
|
||||
Section~\ref{sec:scripts} for a short introduction to writing \rnrs{6}
|
||||
scripts. The script file name and any additional optional
|
||||
\texttt{arguments}
|
||||
can be obtained by calling the
|
||||
\index{\texttt{command-line}}\texttt{command-line} procedure.
|
||||
|
||||
\begin{verbatim}
|
||||
$ cat test.ss
|
||||
(import (rnrs))
|
||||
(write (command-line))
|
||||
(newline)
|
||||
|
||||
$ ikarus --r6rs-script test.ss hi there
|
||||
("test.ss" "hi" "there")
|
||||
$
|
||||
\end{verbatim}
|
||||
|
||||
\item \texttt{ikarus files ... [-- arguments ...]}
|
||||
|
||||
The lack of an \texttt{--r6rs-script} argument causes Ikarus to
|
||||
start in interactive mode. Each of the \texttt{files} is first
|
||||
loaded, in the interaction environment. The interaction environment
|
||||
initially containes all the bindings exported from the
|
||||
\texttt{(ikarus)} library (see Section~\ref{lib:ikarus}). The
|
||||
optional \texttt{arguments} following the \texttt{--} marker can be obtained
|
||||
by calling the \texttt{command-line} procedure.
|
||||
|
||||
|
||||
\BoxedText{Note:}{The interactive mode is intended for quickly
|
||||
experimenting with the built-in features. It is intended neither
|
||||
for developing applications nor for writing any substantial pieces
|
||||
of code. The main reason for this is that the innteraction between
|
||||
\rnrs{6} libraries and the interactive environment is not well
|
||||
understood. We hope to achieve better interaction between the two
|
||||
subsystems in the future.}
|
||||
|
||||
\end{itemize}
|
||||
|
||||
|
||||
|
||||
\newpage
|
||||
|
||||
|
||||
\chapter{\rnrs{6} Crash Course}
|
||||
|
||||
* Describe major differences between r6 and r5
|
||||
|
||||
* Explain what a top-level program is
|
||||
|
||||
* Explain what a library is
|
||||
|
||||
* Explain what the standard R6RS libraries are
|
||||
|
||||
\section{\label{sec:scripts}Writing a simple script}
|
||||
|
||||
* Hello World example
|
||||
|
||||
* Definitions (procedures)
|
||||
|
||||
* Simple macros.
|
||||
|
||||
\section{Writing simple libraries}
|
||||
|
||||
\section{\rnrs{6} Standard Libraries}
|
||||
|
||||
\subsection{\texttt{(rnrs (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs arithmetic bitwise (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs arithmetic fixnums (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs arithmetic flonums (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs bytevectors (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs conditions (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs control (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs enums (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs exceptions (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs files (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs hashtables (6))}}
|
||||
\cite{ghuloum07hashtables}
|
||||
|
||||
\subsection{\texttt{(rnrs io ports (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs io simple (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs lists (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs mutable-pairs (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs mutable-strings (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs programs (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs r5rs (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs records inspection (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs records procedural (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs records syntactic (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs sorting (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs syntax-case (6))}}
|
||||
a
|
||||
\subsection{\texttt{(rnrs unicode (6))}}
|
||||
a
|
||||
|
||||
|
||||
|
||||
|
||||
\chapter{Ikarus's Built-in Libraries}
|
||||
|
||||
* list all ikarus libraries.
|
||||
|
||||
* explain each of the exports.
|
||||
|
||||
\section{\label{lib:ikarus}\texttt{(ikarus)}}
|
||||
\section{\texttt{(ikarus files)}}
|
||||
\section{\texttt{(ikarus parameters)}}
|
||||
\section{\texttt{(ikarus posix)}}
|
||||
\section{\texttt{(ikarus printing)}}
|
||||
\section{\texttt{(ikarus symbols)}}
|
||||
\section{\texttt{(ikarus timers)}}
|
||||
\section{\texttt{(ikarus tracing)}}
|
||||
\section{\texttt{(ikarus unicode)}}
|
||||
\section{\texttt{(ikarus guardians)}}
|
||||
\cite{dybvig93guardians}
|
||||
\section{\texttt{(ikarus weak-pairs)}}
|
||||
\section{\texttt{(ikarus modules)}}
|
||||
\section{\texttt{(ikarus library-manager)}}
|
||||
|
||||
% \chapter{Additional Libraries}
|
||||
%
|
||||
% \section{\texttt{(iu match)}}
|
||||
|
||||
|
||||
% \chapter{The Programming Environment}
|
||||
%
|
||||
% \section{Working with Unicode}
|
||||
%
|
||||
% \section{Working}
|
||||
%
|
||||
% \section{Some Section Here}
|
||||
%
|
||||
% %\index{cheese!gouda!brie}
|
||||
% %\index{cheese!gouda!none}
|
||||
% \section{Additional Stuff}
|
||||
% \subsection{And some sub stuff}
|
||||
|
||||
\appendix
|
||||
|
||||
\bibliographystyle{plain}
|
||||
\bibliography{ikarus-users-guide}
|
||||
\printindex
|
||||
|
||||
\backmatter
|
||||
|
||||
|
||||
\end{document}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue