![]() |
Jupyter at Bryn Mawr College |
|
|
Public notebooks: /services/public/dblank / CS245 Programming Languages / 2014-Fall / Notes |
Q1) Write the function mylength
(define mylength
(lambda (lyst)
(cond
((null? lyst) 0) ;; base case
(else (+ 1 (mylength (cdr lyst))))))) ;; recur
Now we test it:
(mylength '())
(mylength '(0))
(mylength '(1 2 3))
(mylength '(1 2 3 4 5))
(null? (cons 1 2))
(list? (cons 1 (cons 2 (cons 3 '()))))
'(1 2 3)
(define mylist?
(lambda (lyst)
(cond
((null? lyst) #t)
((and (not (pair? (cdr lyst)))
(not (null? (cdr lyst)))) #f)
(else (mylist? (cdr lyst))))))
(mylist? '())
(mylist?
(mylist? (cons 1 2))
(snoc 'a '(x y z))
(rac '(x y z))
(define count
(lambda (atom lyst)
(cond
((null? lyst) 0)
((eq? (car lyst) atom) (+ 1 (count atom (cdr lyst))))
(else (count atom (cdr lyst))))))
(count 0 '())
(count 'banana '(apple))
(count 'banana '(apple banana))
(count 'banana '(banana apple banana))
(count 'banana '((banana) apple banana))
(define add
(lambda (m n)
(cond
((= n 0) m)
(else (add (+ m 1) (- n 1))))))
(add 1 1000)