Advertisement
Guest User

Untitled

a guest
Aug 16th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.76 KB | None | 0 0
  1. (define is-cond-expression?
  2. (lambda (v)
  3. (if (pair? v)
  4. (if (equal? (car v) 'cond)
  5. (if (equal? (cadr v) 'else)
  6. (is-expression? (list-ref v 2))
  7. (letrec ([visit (trace-lambda cunt (x)
  8. (if (equal? (car x) 'else)
  9. (is-expression? (cdr x)))
  10. (and (is-cond-clause? (car x))
  11. (visit (cdr x))))])
  12. (visit (cdr v))))
  13. #f)
  14. #f)))
  15.  
  16. (define is-cond-clause?
  17. (lambda (v)
  18. (if (not (null? v))
  19. (if (proper-list-of-given-length? v 2)
  20. (and (is-expression? (list-ref v 0))
  21. (is-expression? (list-ref v 1)))
  22. (if (proper-list-of-given-length? v 3)
  23. (and (is-expression? (list-ref v 0))
  24. (equal? (list-ref v 1) '=>)
  25. (is-expression? (list-ref v 2)))
  26. #f))
  27. #t)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement