Created
May 26, 2010 12:50
-
-
Save dce/414428 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(define atom? | |
(lambda (a) | |
(not (or (null? a) (pair? a))))) | |
(define rember* | |
(lambda (a l) | |
(cond | |
((null? l) `()) | |
((pair? (car l)) (cons (rember* a (car l)) (rember* a (cdr l)))) | |
((eq? (car l) a) (rember* a (cdr l))) | |
(else (cons (car l) (rember* a (cdr l))))))) | |
(rember* `cup `((coffee) cup ((tea) cup) (and (hick)) cup)) | |
(rember* `sauce `(((tomato sauce)) ((bean) sauce) (and ((flying)) sauce))) | |
(define insertR* | |
(lambda (new old l) | |
(cond | |
((null? l) `()) | |
((pair? (car l)) (cons (insertR* new old (car l)) (insertR* new old (cdr l)))) | |
((eq? (car l) old) (cons old (cons new (insertR* new old (cdr l))))) | |
(else (cons (car l) (insertR* new old (cdr l))))))) | |
(insertR* `roast `chuck `((how much (wood)) could ((a (wood) chuck)) (((chuck))) (if (a) ((wood chuck))) could chuck wood)) | |
(define occur* | |
(lambda (a l) | |
(cond | |
((null? l) 0) | |
((pair? (car l)) (+ (occur* a (car l)) (occur* a (cdr l)))) | |
((eq? (car l) a) (+ 1 (occur* a (cdr l)))) | |
(else (occur* a (cdr l)))))) | |
(occur* `banana `((banana) | |
(split ((((banana ice))) | |
(cream (banana)) | |
sherbet)) | |
(banana) | |
(bread) | |
(banana brandy))) | |
(define subst* | |
(lambda (new old l) | |
(cond | |
((null? l) `()) | |
((pair? (car l)) (cons (subst* new old (car l)) (subst* new old (cdr l)))) | |
((eq? (car l) old) (cons new (subst* new old (cdr l)))) | |
(else (cons (car l) (subst* new old (cdr l))))))) | |
(subst* `orange `banana `((banana) | |
(split ((((banana ice))) | |
(cream (banana)) | |
sherbet)) | |
(banana) | |
(bread) | |
(banana brandy))) | |
(define insertL* | |
(lambda (new old l) | |
(cond | |
((null? l) `()) | |
((pair? (car l)) (cons (insertL* new old (car l)) (insertL* new old (cdr l)))) | |
((eq? (car l) old) (cons new (cons old (insertL* new old (cdr l))))) | |
(else (cons (car l) (insertL* new old (cdr l))))))) | |
(insertL* `pecker `chuck `((how much (wood)) could ((a (wood) chuck)) (((chuck))) (if (a) ((wood chuck))) could chuck wood)) | |
(define member* | |
(lambda (a l) | |
(cond | |
((null? l) #f) | |
((pair? (car l)) (or (member* a (car l)) (member* a (cdr l)))) | |
((or (eq? (car l) a) (member* a (cdr l))))))) | |
(define leftmost | |
(lambda (l) | |
(cond | |
((atom? l) l) | |
(else (leftmost (car l)))))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment