          Lecture 3 - Page 39 : 42
 Functional Programming in SchemeName binding, Recursion, Iteration, and Continuations * Name binding constructs The let name binding expression The equivalent meaning of let Examples with let name binding The let* name binding construct An example with let* The letrec namebinding construct LAML time functions * Conditional expressions Conditional expressions Examples with if Example with cond: leap-year? Example with cond: american-time Example with cond: as-string * Recursion and iteration Recursion List processing Tree processing (1) Tree processing (2) Recursion versus iteration Example of recursion: number-interval Examples of recursion: string-merge Examples with recursion: string-of-char-list? Exercises * Example of recursion: Hilbert Curves Hilbert Curves Building Hilbert Curves of order 1 Building Hilbert Curves of order 2 Building Hilbert Curves of order 3 Building Hilbert Curves of order 4 A program making Hilbert Curves * Continuations Introduction and motivation The catch and throw idea A catch and throw example The intuition behind continuations Being more precise The capturing of continuations Capturing, storing, and applying continuations Use of continuations for escaping purposes Practical example: Length of an improper list Practical example: Searching a binary tree
 Capturing, storing, and applying continuations
 We here show capturing, imperative assignment, and a subsequent application of a continuation
 Context C and expression E Value of C Application of continuation Value ```(+ 5 (call/cc (lambda (e) (set! cont-remember e) (* 4 3))))``` `17` `(cont-remember 3)` `8` ```(cons 1 (cons 2 (cons 3 (call/cc (lambda (e) (set! cont-remember e) '())))))``` `(1 2 3)` `(cont-remember '(7 8))` `(1 2 3 7 8)` ```(define x 5) (if (= 0 x) 'undefined (remainder (* (call/cc (lambda (e) (set! cont-remember e) (+ x 1) )) (- x 1)) x))``` `4` `(cont-remember 3)` `2`

Capturing and applying continuations. The captured continuations are stored in a global variable. The application of the continuation is shown in the third column, and the result of the application of the continuation is shown in the fourth column.