Guest User

practicing recursion

a guest
Jun 30th, 2022
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.00 KB | None | 0 0
  1. ;; Causes horrible recursion
  2. (define (nm-test-bad terms)
  3.   (cond ((string? (car terms))
  4.          (display (format #f "~s" terms)))
  5.         ((list? (car terms))
  6.          (nm-test '((caar terms) . (cdr terms)))
  7.          (unless (null? (cdar terms))
  8.            (nm-test '((cdar terms) . (cdr terms)))))))
  9.  
  10. ;; Quasi quote works
  11. (define (nm-test-quasi terms)
  12.   (cond ((string? (car terms))
  13.          (display (format #f "~s" terms)))
  14.         ((list? (car terms))
  15.          (nm-test `(,(caar terms)  . ,(cdr terms)))
  16.          (unless (null? (cdar terms))
  17.            (nm-test `(,(cdar terms) . ,(cdr terms)))))))
  18.  
  19. ;; Cons procedure works and is less confusing
  20. (define (nm-test terms)
  21.   (cond ((string? (car terms))
  22.          (display (format #f "~s" terms)))
  23.         ((list? (car terms))
  24.          (nm-test (cons (caar terms) (cdr terms)))
  25.          (unless (null? (cdar terms))
  26.            (nm-test (cons (cdar terms) (cdr terms)))))))
  27.  
  28. (nm-test '(("tom" "dick") . "harry")))
  29. (nm-test '("tom" . "harry"))
  30.  
  31.  
Add Comment
Please, Sign In to add comment