[(null? l) (k 'notfound)]
[(eq? (car l) a) (cdr l)]
[(atom? (car l)) (cons (car l) (aux (cdr l) k))]
- ; what happens when (car l) exists but isn't an atom?
- [else (let ([car2 (let/cc k2 ; now what will happen when k2 is called?
- (aux (car l) k2))])
- (cond
- ; when will the following condition be met? what happens then?
- [(eq? car2 'notfound) (cons (car l) (aux (cdr l) k))]
- [else (cons car2 (cdr l))]))]))]
+ [else
+ ; what happens when (car l) exists but isn't an atom?
+ (let ([car2 (let/cc k2 ; now what will happen when k2 is called?
+ (aux (car l) k2))])
+ (cond
+ ; when will the following condition be met? what happens then?
+ [(eq? car2 'notfound) (cons (car l) (aux (cdr l) k))]
+ [else (cons car2 (cdr l))]))]))]
[lst2 (let/cc k1 ; now what will happen when k1 is called?
(aux lst k1))])
(cond
[(eq? lst2 'notfound) lst]
[else lst2]))))
-
Here is [the answer](/hints/cps_hint_3), but try to figure it out for yourself.
Here is the hardest example. Try to figure out what this function does: