Skip to content

Instantly share code, notes, and snippets.

@dce
Created May 26, 2010 12:50
Show Gist options
  • Save dce/414428 to your computer and use it in GitHub Desktop.
Save dce/414428 to your computer and use it in GitHub Desktop.
(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