[an error occurred while processing this directive]
will enable tracing of the procedure. The interpreter will print out a message corresponding to the entrance (showing the parameters) and exit (showing the resulting value) of the traced procedure. This is a useful tool for understanding what is going on when your programs are evaluated.(trace procedure)
(define (list? p)
(if (null? p)
#t
(if (pair? p)
(list? (cdr p))
#f)))
(define (sumlist p)
(if (null? p)
0
(+ (car p) (sumlist (cdr p)))))
(define (map f p)
(if (null? p)
null
(cons (f (car p))
(map f (cdr p)))))
Here's an example use of map in the choose-n procedure from PS2:
(define (choose-n n lst)
;; operands: a number n and a list (of at least n elements)
;; result: evaluates to a list of all possible ways
;; of choosing n elements from lst
(if (= n 0)
(list null)
(if (= (length lst) n)
(list lst)
(append (choose-n n (cdr lst))
(map (lambda (clst) (cons (car lst) clst))
(choose-n (- n 1) (cdr lst)))))))
What is the map application expression doing?
(define (list-cruncher base proc combiner lst)
(if (null? lst)
base
(combiner (proc (car lst))
(list-cruncher base proc combiner
(cdr lst)))))
(define (sumlist p)
(list-cruncher _____ ___________________ _____ p))
(define (map f p)
(list-cruncher _______ ______ ______ p))
(define (length p)
(list-cruncher ______ _____________ + p))
Why is it impossible to correctly define list? using just list-cruncher?
Define find-closest-number, a procedure that takes two
parameters, a goal and a list of numbers, and produces the number in the
list numbers list that is closest to goal.
[an error occurred while processing this directive]