C311 Assignment 4. Sample scheme interaction

Chez Scheme Version 5.0b
Copyright (c) 1994 Cadence Research Systems

> (load "04.ss")


;; closures represented as scheme procedures
;;
> (run '+)
#<system procedure +>
> (run '(+ 1 2))
3
> (run '(lambda (x) 1))
#<procedure>
> (run '((lambda (x) 1) 2))
1
> (run '((lambda (a b c d e) (list a b c d e)) 1 2 3 4 5))
(1 2 3 4 5)
> (run '((lambda () 5)))
5


;; set!
> (run '(let ([a 1] [b 2] [c 3])
	  (let ([dummy (set! a c)])
	    (let ([dummy (set! b a)])
	      (let ([dummy (set! c b)])
		(list a b c))))))
(3 3 3)
> (run '(let ([reverse 0])
	  (let ([new-reverse
		  (lambda (ls ans)
		    (if (null ls)
			ans
			(reverse (cdr ls) (cons (car ls) ans))))])
	    (let ([dummy (set! reverse new-reverse)])
	      (let ([reverse
		      (lambda (ls)
			(reverse ls emptylist))])
		(let ([my-list (list 1 2 3 4 5)])
		  (list
		    my-list
		    (reverse my-list)
		    (reverse (reverse my-list))
		    (reverse (reverse (reverse my-list))))))))))
((1 2 3 4 5) (5 4 3 2 1) (1 2 3 4 5) (5 4 3 2 1))


;; begin
> (run '(let ([a 1] [b 2] [c 3])
	  (begin
	    (set! a c)
	    (set! b a)
	    (set! c b)
	    (list a b c))))
(3 3 3)
> (expand '(begin 1))
1
> (expand '(begin 1 2))
(begin 1 2)
> (expand '(begin 1 2 3))
(begin 1 (begin 2 3))
> (expand '(begin 1 2 3 4))
(begin 1 (begin 2 (begin 3 4)))
 

Process scheme finished


Last modified on Thu Sep 26 18:06:08 1996