--- /dev/null
+@menu
+Preliminary
+
+* Introduction::
+* Using Guile::
+
+
+
+@bye
+
+>You can actually put any English text to break up the menu, so you
+>could put the "Part n" headings in it.
+
+
+
+Introduction
+ --- Explains Guile's goals, and gives brief examples of how to use
+ Guile interactively (show off repl), as a script interpreter,
+ and as an embedded interpreter.
+
+Part I: Guile Scheme
+ R4RS Scheme as a Starting Point
+ --- Here we refer to R4RS, and explain that we're only
+ describing differences.
+ Block comments and interpreter triggers
+ Symbol case
+ Keywords
+ Exceptions
+ Modules
+ --- the preceeding three come first, because we need them
+ in order to explain the behavior of some things later
+ Exception Handling
+ --- mention that repls usually establish default exception handlers
+ Dynamic Wind
+ Records
+ Structures
+ Arrays
+ Binary Numeric Operations
+ Shared and Read-Only Strings
+ Object Properties
+ Association Lists and Hash Tables
+ (Dictionaries In General)
+ association lists
+ hash tables (Hash Values)
+ Input/Output ports
+ file ports
+ soft ports
+ string ports
+ extended I/O (fseek; line read/write)
+ Garbage Collection
+ Threads and Dynamic Roots
+ Reflection
+ eval
+ Tag Values
+ Weak references
+ Regular Expressions
+ SLIB
+ POSIX system calls and networking
+ --- I think people will generally know whether they're looking
+ for a system call or not, so this should be an okay category.
+ conventions (includes error handling)
+ ports vs. file descriptors
+ file system (mknod goes here, no?)
+ user database
+ time (includes gettimeofday or whatever, strftime, strptime)
+ processes
+ terminals and pseudo-terminals
+ pipes
+ networking (includes databases, address conversion, and sockets)
+ system identification (uname)
+ locales (setlocale)
+ --- Note that there is no more 'misc'. It's better to have
+ small sections than unhelpful names.
+ SCSH
+ --- includes info on how to get SCSH features (open this
+ module), but mostly just a pointer to the SCSH manual.
+ This should not be under POSIX. SCSH includes plenty of
+ high-level stuff for starting processes and string
+ processing. SCSH is not a subset of POSIX, nor the
+ reverse.
+ Tcl/Tk interface
+ Module internals
+ first-class variables
+ first-class modules
+ internal debugging interface
+ --- The name of this chapter needs to clearly distinguish it
+ from the appendix describing the debugger UI. The intro
+ should have a pointer to the UI appendix.
+
+Part II: Using Scheme with C --- a Portable Interface
+ --- We cover gh in a completely separate section. Why? I admit
+ I'm on shaky ground, but here's my reasoning: People who want
+ to write portable C code need to restrict themselves to only
+ using GH, and GH's semantics are (necessarily) well-defined
+ without reference to Guile's particulars. This makes life
+ more difficult for folks who just prefer to use the GH
+ interface when they can, but I really think the SCM interface
+ is not so bad, once you're used to it. A *lot* of GH
+ functions are just wrappers for SCM functions.
+ --- We cover repls here too, since GH has repl functions.
+
+Part III: Using Scheme with C --- Guile's Interface
+ Scheme data representation
+ Relationship between Scheme and C functions
+ --- this is where we explain that all the functions marked as
+ "Primitive Functions" are also accessible from C, and how
+ to derive the C interface given the Scheme interface, when
+ we don't spell it out.
+ ... I think there's other stuff needed here ...
+ I/O internals
+ linking Guile with your code
+ --- Mark's "Tools to automate adding libraries" is not a
+ well-defined concept. I think this is closer to what we
+ want to cover for now.
+ snarfing
+
+Appendices:
+ Obtaining and Installing Guile
+ Invoking Guile
+ --- mentions read-eval-print loops
+ --- both the SCSH and GAWK manuals relegate invocation details
+ to an appendix. We can give examples in the introduction.
+ debugger user interface
+ --- The title and introduction of this appendix need to
+ distinguish this clearly from the chapter on the internal
+ debugging interface.
+
+Indices:
+ --- At the top of the function/variable index, remind people
+ to look for functions under their Scheme names as well as
+ their C names.