1
0
Fork
You've already forked sdf
0
Software Design for Flexibility
  • Scheme 99.6%
  • TeX 0.4%
Find a file
2021年03月30日 14:08:34 +02:00
abstracting-a-domain seed 2021年03月30日 14:08:34 +02:00
automatic-differentiation seed 2021年03月30日 14:08:34 +02:00
combinators seed 2021年03月30日 14:08:34 +02:00
combining-arithmetics seed 2021年03月30日 14:08:34 +02:00
common seed 2021年03月30日 14:08:34 +02:00
compiling-to-execution-procedures seed 2021年03月30日 14:08:34 +02:00
continuations seed 2021年03月30日 14:08:34 +02:00
continuations-to-amb seed 2021年03月30日 14:08:34 +02:00
dependencies seed 2021年03月30日 14:08:34 +02:00
design-of-the-matcher seed 2021年03月30日 14:08:34 +02:00
efficient-generic-procedures seed 2021年03月30日 14:08:34 +02:00
exploratory-behavior seed 2021年03月30日 14:08:34 +02:00
generic-interpreter seed 2021年03月30日 14:08:34 +02:00
generic-procedures seed 2021年03月30日 14:08:34 +02:00
layers seed 2021年03月30日 14:08:34 +02:00
manager seed 2021年03月30日 14:08:34 +02:00
non-strict-arguments seed 2021年03月30日 14:08:34 +02:00
pattern-matching-on-graphs seed 2021年03月30日 14:08:34 +02:00
propagation seed 2021年03月30日 14:08:34 +02:00
regular-expressions seed 2021年03月30日 14:08:34 +02:00
term-rewriting seed 2021年03月30日 14:08:34 +02:00
unification seed 2021年03月30日 14:08:34 +02:00
user-defined-types seed 2021年03月30日 14:08:34 +02:00
wrappers seed 2021年03月30日 14:08:34 +02:00
COPYING seed 2021年03月30日 14:08:34 +02:00
README.org seed 2021年03月30日 14:08:34 +02:00

Software Design for Flexibility

This repo contains the SDF software (downloaded from csail) supporting the book Software Design for Flexibility by Chris Hanson and Gerald Jay Sussman. ISBN 9780262045490

We have all spent too much time trying to deform an old piece of code so that it could be used in a way that we didn't realize would be needed when we wrote it. This is a terrible waste of time and effort. Unfortunately, there are many pressures on us to write code that works very well for a very specific purpose, with few reusable parts. But we think that this is not necessary. —Chris Hanson and Gerald Jay Sussman

Getting started

The book’s software is designed to be run using MIT/GNU Scheme however many of the examples will work unchanged with other implementations.

There is a management tool "to help one use the associated software. For example, it simplifies the job of loading the software needed to reproduce the examples in the book and to support the solution of the book’s exercises." details can be found in the manual.

(load "manager/load")
(manage 'help)
(manage 'new-environment 'combinators)

Flexibility in Nature and in Design

  • file:common

Domain-Specific Languages

  • file:combinators
  • file:regular-expressions
  • file:abstracting-a-domain
  • file:wrappers

Variations on an Arithmetic Theme

  • file:generic-procedures
  • file:efficient-generic-procedures
  • file:combining-arithmetics
  • file:automatic-differentiation
  • file:user-defined-types

Pattern Matching

  • file:design-of-the-matcher
  • file:term-rewriting
  • file:unification
  • file:pattern-matching-on-graphs

Evaluation

  • file:compiling-to-execution-procedures
  • file:generic-interpreter
  • file:continuations
  • file:continuations-to-amb
  • file:exploratory-behavior
  • file:non-strict-arguments

Layering

  • file:layers
  • file:dependencies

Propagation

  • file:propagation