CS Seminar, 2 and 9 February 2005
Data Driven Computation in Scheme and C++
Hygienic Macros, Call/cc, Y combinator in Scheme
John Franco
ECECS, University of Cincinnati

hamming_tree.ppt     Motivation - Hamming sequences
slow-ham.cc Generate-and-test solution is much too slow
ham_pq.cc A C++ solution using a priority queue for thread simulation
   pqueue.cc The priority queue class for above
   pqueue.h The include file for above
lambda.ss Scheme primer
ham.0.ss Scheme solution attempt without "force" and "delay" fails
ham.1.ss Scheme solution using lambda to "force" and "delay"
hamming.hs A Haskell solution - force and delay embedded in the language
stream.cc Use classes to implement "force" and "delay" in C++
   bigint.cc We use character strings to represent large numbers
   bigint.h The include file for above
stream.1.cc Stream network using above
hamming.cc Stream (data driven) solution to Hamming's problem in C++
topo.ppt Finding a topological sort
topo.cc Stream solution to finding a topological sort
syntax.ss Macros in Scheme: define-syntax
topo.4.ss Self modifying code: Scheme solution to finding a topological sort using define-syntax
heap.ppt Illustration of heaps in Scheme: prep for call/cc
call.5.ss Uses for call-with-current-continuation
kalotan.6.ss Kalotan puzzle using call/cc to control the search via amb
color.7.ss Coloring Europe via amb
magic.8.ss Magic squares via amb
usman.9.ss Supermarket logic puzzle via amb
y.ss The Y combinator - for nameless recursion
ycombi.ss Derivation of the Y combinator - power of lambda and weak typing
streams.doc Further reading