kons.scm 484 B

1234567891011121314151617181920212223
  1. (define (kons kar kdr) (lambda (sel) (sel kar kdr)))
  2. (define (kar kons) (kons (lambda (x y) x)))
  3. (define (kdr kons) (kons (lambda (x y) y)))
  4. (define (list->klist l)
  5. (if (null? l)
  6. '()
  7. (kons (car l) (list->klist (cdr l)))))
  8. (define (klist->list k)
  9. (if (null? k)
  10. '()
  11. (cons (kar k) (klist->list (kdr k)))))
  12. (define l '(4 9 3 8 4 1 9 3 8))
  13. (for-each print
  14. (klist->list
  15. (list->klist
  16. (klist->list
  17. (list->klist
  18. (klist->list
  19. (list->klist l)))))))