Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define is-cond-expression?
- (lambda (v)
- (if (pair? v)
- (if (equal? (car v) 'cond)
- (if (equal? (cadr v) 'else)
- (is-expression? (list-ref v 2))
- (letrec ([visit (trace-lambda cunt (x)
- (if (equal? (car x) 'else)
- (is-expression? (cdr x)))
- (and (is-cond-clause? (car x))
- (visit (cdr x))))])
- (visit (cdr v))))
- #f)
- #f)))
- (define is-cond-clause?
- (lambda (v)
- (if (not (null? v))
- (if (proper-list-of-given-length? v 2)
- (and (is-expression? (list-ref v 0))
- (is-expression? (list-ref v 1)))
- (if (proper-list-of-given-length? v 3)
- (and (is-expression? (list-ref v 0))
- (equal? (list-ref v 1) '=>)
- (is-expression? (list-ref v 2)))
- #f))
- #t)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement