Midterm Summary
- Scheme Programming Techniques
- Basic Scheme interpreter
- constants
- variables
- combinations
- quotes
- conditionals
- lambdas
- S-expression language
- atoms
- lists
- car, cdr and cons
- local bindings
- let and letrec
- "Little Schemer" style programming (Chapters 1 - 6)
- recursion on atoms and lists
- rember, subst, append, etc.
- *-functions
- functions on numbers
- recursion on atoms and lists
- Higher order functions
- map
- fold
- curry
- compose
- Basic Scheme interpreter
- Lambda Calculus
- Expression syntax
- free and bound variables
- Conversion and reduction rules
- Expression syntax
- Binding and Scope
- free and bound variables
- lexical binding
- variable scope
- contour diagrams
- lexical depth
- lexical address
- static vs. dynamic binding
- static and dynamic environments
- need for procedures to store static environments
- pros and cons of using static or dynamic binding
- static and dynamic environments
- Abstract Data Types
- Cons-box diagrams
- define-datatype
- variant data types
- components
- operator types: constructors, selectors, recognizers
- Examples: binary trees
- Abstract and concrete syntax
- Parsing and unparsing
last modified October 13, 2005 by rms@cs.oberlin.edu