Created
December 18, 2013 13:42
-
-
Save toctan/8022557 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 (lat? l) | |
| (cond ((null? l) #t) | |
| ((atom? (car l)) (lat? (cdr l))) | |
| (else #f))) | |
| (define (member? a lat) | |
| (cond ((null? lat) #f) | |
| ((eq? a (car lat)) #t) | |
| (else (member? a (cdr lat))))) | |
| (define (rember a lat) | |
| (if (null? lat) | |
| '() | |
| (if (eq? (car lat) a) | |
| (cdr lat) | |
| (cons (car lat) | |
| (rember a (cdr lat)))))) | |
| (define (rember a lat) | |
| (cond ((null? lat) '()) | |
| ((eq? (car lat) a) (cdr lat)) | |
| (else (cons (car lat) | |
| (rember a (cdr lat)))))) | |
| (define (firsts l) | |
| (cond ((null? l) '()) | |
| (else (cons (car (car l)) | |
| (firsts (cdr l)))))) | |
| (define (insertR new old lat) | |
| (if (null? lat) | |
| '() | |
| (if (eq? old (car lat)) | |
| (cons old (cons new (cdr lat))) | |
| (cons (car lat) | |
| (insertR new old (cdr lat)))))) | |
| (define (insertL new old lat) | |
| (if (null? lat) | |
| '() | |
| (if (eq? old (car lat)) | |
| (cons new lat) | |
| (cons (car lat) | |
| (insertR new old (cdr lat)))))) | |
| (define (subst new old lat) | |
| (if (null? lat) | |
| '() | |
| (if (eq? old (car lat)) | |
| (cons new (cdr lat)) | |
| (cons (car lat) | |
| (subst new old (cdr lat)))))) | |
| (define (multi-subst new old lat) | |
| (if (null? lat) | |
| '() | |
| (if (eq? old (car lat)) | |
| (cons new (multi-subst new old (cdr lat))) | |
| (cons (car lat) | |
| (multi-subst new old (cdr lat)))))) | |
| (define (subst2 new o1 o2 lat) | |
| (if (null? lat) | |
| '() | |
| (if (or (eq? o1 (car lat)) | |
| (eq? o2 (car lat))) | |
| (cons new (cdr lat)) | |
| (cons (car lat) | |
| (subst new o1 o2 (cdr lat)))))) | |
| (define (multi-rember a lat) | |
| (if (null? lat) | |
| '() | |
| (if (eq? a (car lat)) | |
| (multi-rember a (cdr lat)) | |
| (cons (car lat) | |
| (multi-rember a (cdr lat)))))) | |
| (define (multi-insertR new old lat) | |
| (if (null? lat) | |
| '() | |
| (if (eq? old (car lat)) | |
| (cons old | |
| (cons new | |
| (multi-insertR new old (cdr lat)))) | |
| (cons (car lat) | |
| (insertR new old (cdr lat)))))) | |
| (define (multi-insertL new old lat) | |
| (if (null? lat) | |
| '() | |
| (if (eq? old (car lat)) | |
| (cons new | |
| (cons old | |
| (multi-insertL new old (cdr lat)))) | |
| (cons (car lat) | |
| (insertL new old (cdr lat)))))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment