( define ( run-program ρ exprs ) ( match exprs ['( ) ( void ) ] [ ( cons ` ( define, x, e ) rest ) ( let ( [ v ( val ρ e ) ] ) ( run-program ( extend ρ x v ) rest ) ) ] [ ( cons e rest ) ( displayln ( val ρ e ) ) ( run-program ρ rest ) ] ) ) > ( run-program'( )'( ( define id ( λ ( x ) x ) ) ( id ( λ ( y ) ( λ ( z ) ( z y ) ) ) ) ) ) #(struct:CLOS ((id.
#(struct:CLOS () x x))) y (λ (z) (z y))) > ( run-program'( )'( ( define z ( λ ( f ) ( λ ( x ) x ) ) ) ( define s ( λ ( n ) ( λ ( f ) ( λ ( x ) ( f ( ( n f ) x ) ) ) ) ) ) ( s ( s z ) ) ) ) #(struct:CLOS ((n. #(struct:CLOS ((n. #(struct:CLOS () f (λ (x) x))) (z.