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