Advertisement
triclops200

Fun with tail recursion

Jun 28th, 2012
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 0.55 KB | None | 0 0
  1. (define sum (lambda (xs) (sum_h xs 0)))
  2. (define sum_h (lambda (xs x) (cond
  3.     ((equal? xs '())
  4.         x
  5.     )
  6.     (#t
  7.         (sum_h (cdr xs) (+ x (car xs)))
  8.     )
  9.     )
  10. ))
  11.  
  12. (define range (lambda (n m) (range_h n m '())))
  13. (define range_h (lambda (n m xs) (cond
  14.     ((>= n m)
  15.         xs
  16.     )
  17.     (#t
  18.         (range_h  n  (- m 1) (cons m xs))
  19.     )
  20.     )
  21. ))
  22.  
  23. (define rangestep (lambda (n m x) (rangestep_h n m x '())))
  24. (define rangestep_h (lambda (n m x xs) (cond
  25.     ((>= n (+ m 1))
  26.         xs
  27.     )
  28.     (#t
  29.         (rangestep_h (+ n x) m x (append xs (list n)))
  30.     )
  31.     )
  32. ))
  33. (display  (range 0 10))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement