[Top] | [Contents] | [Index] | [ ? ] |
Table of Contents
- Preface
- 1 Introduction
- 2 Hello Guile!
- 3 Hello Scheme!
- 3.1 Data Types, Values and Variables
- 3.2 The Representation and Use of Procedures
- 3.3 Expressions and Evaluation
- 3.4 The Concept of Closure
- 3.4.1 Names, Locations, Values and Environments
- 3.4.2 Local Variables and Environments
- 3.4.3 Environment Chaining
- 3.4.4 Lexical Scope
- 3.4.5 Closure
- 3.4.6 Example 1: A Serial Number Generator
- 3.4.7 Example 2: A Shared Persistent Variable
- 3.4.8 Example 3: The Callback Closure Problem
- 3.4.9 Example 4: Object Orientation
- 3.5 Further Reading
- 4 Programming in Scheme
- 4.1 Guile’s Implementation of Scheme
- 4.2 Invoking Guile
- 4.3 Guile Scripting
- 4.4 Using Guile Interactively
- 4.5 Using Guile in Emacs
- 4.6 Using Guile Tools
- 4.7 Installing Site Packages
- 5 Programming in C
- 5.1 Parallel Installations
- 5.2 Linking Programs With Guile
- 5.3 Linking Guile with Libraries
- 5.4 General concepts for using libguile
- 5.5 Defining New Types (Smobs)
- 5.6 Function Snarfing
- 5.7 An Overview of Guile Programming
- 5.7.1 How One Might Extend Dia Using Guile
- 5.7.1.1 Deciding Why You Want to Add Guile
- 5.7.1.2 Four Steps Required to Add Guile
- 5.7.1.3 How to Represent Dia Data in Scheme
- 5.7.1.4 Writing Guile Primitives for Dia
- 5.7.1.5 Providing a Hook for the Evaluation of Scheme Code
- 5.7.1.6 Top-level Structure of Guile-enabled Dia
- 5.7.1.7 Going Further with Dia and Guile
- 5.7.2 Why Scheme is More Hackable Than C
- 5.7.3 Example: Using Guile for an Application Testbed
- 5.7.4 A Choice of Programming Options
- 5.7.5 How About Application Users?
- 5.7.1 How One Might Extend Dia Using Guile
- 5.8 Autoconf Support
- 6 API Reference
- 6.1 Overview of the Guile API
- 6.2 Deprecation
- 6.3 The SCM Type
- 6.4 Initializing Guile
- 6.5 Snarfing Macros
- 6.6 Simple Generic Data Types
- 6.6.1 Booleans
- 6.6.2 Numerical data types
- 6.6.2.1 Scheme’s Numerical “Tower”
- 6.6.2.2 Integers
- 6.6.2.3 Real and Rational Numbers
- 6.6.2.4 Complex Numbers
- 6.6.2.5 Exact and Inexact Numbers
- 6.6.2.6 Read Syntax for Numerical Data
- 6.6.2.7 Operations on Integer Values
- 6.6.2.8 Comparison Predicates
- 6.6.2.9 Converting Numbers To and From Strings
- 6.6.2.10 Complex Number Operations
- 6.6.2.11 Arithmetic Functions
- 6.6.2.12 Scientific Functions
- 6.6.2.13 Bitwise Operations
- 6.6.2.14 Random Number Generation
- 6.6.3 Characters
- 6.6.4 Character Sets
- 6.6.5 Strings
- 6.6.5.1 String Read Syntax
- 6.6.5.2 String Predicates
- 6.6.5.3 String Constructors
- 6.6.5.4 List/String conversion
- 6.6.5.5 String Selection
- 6.6.5.6 String Modification
- 6.6.5.7 String Comparison
- 6.6.5.8 String Searching
- 6.6.5.9 Alphabetic Case Mapping
- 6.6.5.10 Reversing and Appending Strings
- 6.6.5.11 Mapping, Folding, and Unfolding
- 6.6.5.12 Miscellaneous String Operations
- 6.6.5.13 Representing Strings as Bytes
- 6.6.5.14 Conversion to/from C
- 6.6.5.15 String Internals
- 6.6.6 Bytevectors
- 6.6.6.1 Endianness
- 6.6.6.2 Manipulating Bytevectors
- 6.6.6.3 Interpreting Bytevector Contents as Integers
- 6.6.6.4 Converting Bytevectors to/from Integer Lists
- 6.6.6.5 Interpreting Bytevector Contents as Floating Point Numbers
- 6.6.6.6 Interpreting Bytevector Contents as Unicode Strings
- 6.6.6.7 Accessing Bytevectors with the Array API
- 6.6.6.8 Accessing Bytevectors with the SRFI-4 API
- 6.6.7 Symbols
- 6.6.8 Keywords
- 6.6.9 “Functionality-Centric” Data Types
- 6.7 Compound Data Types
- 6.8 Smobs
- 6.9 Procedures
- 6.10 Macros
- 6.11 General Utility Functions
- 6.12 Definitions and Variable Bindings
- 6.13 Controlling the Flow of Program Execution
- 6.13.1 Sequencing and Splicing
- 6.13.2 Simple Conditional Evaluation
- 6.13.3 Conditional Evaluation of a Sequence of Expressions
- 6.13.4 Iteration mechanisms
- 6.13.5 Prompts
- 6.13.6 Continuations
- 6.13.7 Returning and Accepting Multiple Values
- 6.13.8 Exceptions
- 6.13.9 Procedures for Signaling Errors
- 6.13.10 Dynamic Wind
- 6.13.11 How to Handle Errors
- 6.13.12 Continuation Barriers
- 6.14 Input and Output
- 6.14.1 Ports
- 6.14.2 Reading
- 6.14.3 Writing
- 6.14.4 Closing
- 6.14.5 Random Access
- 6.14.6 Line Oriented and Delimited Text
- 6.14.7 Block reading and writing
- 6.14.8 Default Ports for Input, Output and Errors
- 6.14.9 Types of Port
- 6.14.10 R6RS I/O Ports
- 6.14.11 Using and Extending Ports in C
- 6.14.12 Handling of Unicode byte order marks.
- 6.15 Regular Expressions
- 6.16 LALR(1) Parsing
- 6.17 Reading and Evaluating Scheme Code
- 6.17.1 Scheme Syntax: Standard and Guile Extensions
- 6.17.2 Reading Scheme Code
- 6.17.3 Writing Scheme Values
- 6.17.4 Procedures for On the Fly Evaluation
- 6.17.5 Compiling Scheme Code
- 6.17.6 Loading Scheme Code from File
- 6.17.7 Load Paths
- 6.17.8 Character Encoding of Source Files
- 6.17.9 Delayed Evaluation
- 6.17.10 Local Evaluation
- 6.17.11 Local Inclusion
- 6.17.12 REPL Servers
- 6.18 Memory Management and Garbage Collection
- 6.19 Modules
- 6.19.1 General Information about Modules
- 6.19.2 Using Guile Modules
- 6.19.3 Creating Guile Modules
- 6.19.4 Modules and the File System
- 6.19.5 R6RS Version References
- 6.19.6 R6RS Libraries
- 6.19.7 Variables
- 6.19.8 Module System Reflection
- 6.19.9 Accessing Modules from C
- 6.19.10 provide and require
- 6.19.11 Environments
- 6.20 Foreign Function Interface
- 6.21 Threads, Mutexes, Asyncs and Dynamic Roots
- 6.22 Configuration, Features and Runtime Options
- 6.23 Support for Other Languages
- 6.24 Support for Internationalization
- 6.25 Debugging Infrastructure
- 6.26 Code Coverage Reports
- 7 Guile Modules
- 7.1 SLIB
- 7.2 POSIX System Calls and Networking
- 7.3 HTTP, the Web, and All That
- 7.4 The (ice-9 getopt-long) Module
- 7.5 SRFI Support Modules
- 7.5.1 About SRFI Usage
- 7.5.2 SRFI-0 - cond-expand
- 7.5.3 SRFI-1 - List library
- 7.5.4 SRFI-2 - and-let*
- 7.5.5 SRFI-4 - Homogeneous numeric vector datatypes
- 7.5.6 SRFI-6 - Basic String Ports
- 7.5.7 SRFI-8 - receive
- 7.5.8 SRFI-9 - define-record-type
- 7.5.9 SRFI-10 - Hash-Comma Reader Extension
- 7.5.10 SRFI-11 - let-values
- 7.5.11 SRFI-13 - String Library
- 7.5.12 SRFI-14 - Character-set Library
- 7.5.13 SRFI-16 - case-lambda
- 7.5.14 SRFI-17 - Generalized set!
- 7.5.15 SRFI-18 - Multithreading support
- 7.5.16 SRFI-19 - Time/Date Library
- 7.5.17 SRFI-23 - Error Reporting
- 7.5.18 SRFI-26 - specializing parameters
- 7.5.19 SRFI-27 - Sources of Random Bits
- 7.5.20 SRFI-30 - Nested Multi-line Comments
- 7.5.21 SRFI-31 - A special form ‘rec’ for recursive evaluation
- 7.5.22 SRFI-34 - Exception handling for programs
- 7.5.23 SRFI-35 - Conditions
- 7.5.24 SRFI-37 - args-fold
- 7.5.25 SRFI-38 - External Representation for Data With Shared Structure
- 7.5.26 SRFI-39 - Parameters
- 7.5.27 SRFI-41 - Streams
- 7.5.28 SRFI-42 - Eager Comprehensions
- 7.5.29 SRFI-45 - Primitives for Expressing Iterative Lazy Algorithms
- 7.5.30 SRFI-55 - Requiring Features
- 7.5.31 SRFI-60 - Integers as Bits
- 7.5.32 SRFI-61 - A more general
cond
clause - 7.5.33 SRFI-67 - Compare procedures
- 7.5.34 SRFI-69 - Basic hash tables
- 7.5.35 SRFI-88 Keyword Objects
- 7.5.36 SRFI-98 Accessing environment variables.
- 7.5.37 SRFI-105 Curly-infix expressions.
- 7.6 R6RS Support
- 7.6.1 Incompatibilities with the R6RS
- 7.6.2 R6RS Standard Libraries
- 7.6.2.1 Library Usage
- 7.6.2.2 rnrs base
- 7.6.2.3 rnrs unicode
- 7.6.2.4 rnrs bytevectors
- 7.6.2.5 rnrs lists
- 7.6.2.6 rnrs sorting
- 7.6.2.7 rnrs control
- 7.6.2.8 R6RS Records
- 7.6.2.9 rnrs records syntactic
- 7.6.2.10 rnrs records procedural
- 7.6.2.11 rnrs records inspection
- 7.6.2.12 rnrs exceptions
- 7.6.2.13 rnrs conditions
- 7.6.2.14 I/O Conditions
- 7.6.2.15 rnrs io ports
- 7.6.2.16 rnrs io simple
- 7.6.2.17 rnrs files
- 7.6.2.18 rnrs programs
- 7.6.2.19 rnrs arithmetic fixnums
- 7.6.2.20 rnrs arithmetic flonums
- 7.6.2.21 rnrs arithmetic bitwise
- 7.6.2.22 rnrs syntax-case
- 7.6.2.23 rnrs hashtables
- 7.6.2.24 rnrs enums
- 7.6.2.25 rnrs
- 7.6.2.26 rnrs eval
- 7.6.2.27 rnrs mutable-pairs
- 7.6.2.28 rnrs mutable-strings
- 7.6.2.29 rnrs r5rs
- 7.7 Pattern Matching
- 7.8 Readline Support
- 7.9 Pretty Printing
- 7.10 Formatted Output
- 7.11 File Tree Walk
- 7.12 Queues
- 7.13 Streams
- 7.14 Buffered Input
- 7.15 Expect
- 7.16
sxml-match
: Pattern Matching of SXML - 7.17 The Scheme shell (scsh)
- 7.18 Curried Definitions
- 7.19 Statprof
- 7.20 Implementation notes
- 7.21 Usage
- 7.22 SXML
- 7.23 Texinfo Processing
- 8 GOOPS
- 8.1 Copyright Notice
- 8.2 Class Definition
- 8.3 Instance Creation and Slot Access
- 8.4 Slot Options
- 8.5 Illustrating Slot Description
- 8.6 Methods and Generic Functions
- 8.7 Inheritance
- 8.8 Introspection
- 8.9 Error Handling
- 8.10 GOOPS Object Miscellany
- 8.11 The Metaobject Protocol
- 8.11.1 Metaobjects and the Metaobject Protocol
- 8.11.2 Metaclasses
- 8.11.3 MOP Specification
- 8.11.4 Instance Creation Protocol
- 8.11.5 Class Definition Protocol
- 8.11.6 Customizing Class Definition
- 8.11.7 Method Definition
- 8.11.8 Method Definition Internals
- 8.11.9 Generic Function Internals
- 8.11.10 Generic Function Invocation
- 8.12 Redefining a Class
- 8.13 Changing the Class of an Instance
- 9 Guile Implementation
- 9.1 A Brief History of Guile
- 9.2 Data Representation
- 9.3 A Virtual Machine for Guile
- 9.3.1 Why a VM?
- 9.3.2 VM Concepts
- 9.3.3 Stack Layout
- 9.3.4 Variables and the VM
- 9.3.5 Compiled Procedures are VM Programs
- 9.3.6 Instruction Set
- 9.3.6.1 Lexical Environment Instructions
- 9.3.6.2 Top-Level Environment Instructions
- 9.3.6.3 Procedure Call and Return Instructions
- 9.3.6.4 Function Prologue Instructions
- 9.3.6.5 Trampoline Instructions
- 9.3.6.6 Branch Instructions
- 9.3.6.7 Data Constructor Instructions
- 9.3.6.8 Loading Instructions
- 9.3.6.9 Dynamic Environment Instructions
- 9.3.6.10 Miscellaneous Instructions
- 9.3.6.11 Inlined Scheme Instructions
- 9.3.6.12 Inlined Mathematical Instructions
- 9.3.6.13 Inlined Bytevector Instructions
- 9.4 Compiling to the Virtual Machine
- Appendix A GNU Free Documentation License
- Concept Index
- Procedure Index
- Variable Index
- Type Index
- R5RS Index
[Top] | [Contents] | [Index] | [ ? ] |
This document was generated on April 20, 2013 using texi2html 5.0.