Skip to content

Instantly share code, notes, and snippets.

@lagenorhynque
Created February 8, 2018 01:30
Show Gist options
  • Select an option

  • Save lagenorhynque/aed14f309a1c5808953f2ba4058d35aa to your computer and use it in GitHub Desktop.

Select an option

Save lagenorhynque/aed14f309a1c5808953f2ba4058d35aa to your computer and use it in GitHub Desktop.
(defn sum [xs]
(let [f (fn f [acc xs]
(if (empty? xs)
acc
(recur (+ acc (first xs)) (rest xs))))]
(f 0 xs)))
(sum '(1 2 3)) ; => 6
(defn sum* [xs]
(letfn [(f [acc xs]
(if (empty? xs)
acc
(recur (+ acc (first xs)) (rest xs))))]
(f 0 xs)))
(sum* '(1 2 3)) ; => 6
(defn sum** [xs]
(loop [acc 0
xs xs]
(if (empty? xs)
acc
(recur (+ acc (first xs)) (rest xs)))))
(sum** '(1 2 3)) ; => 6
(define (sum xs)
(letrec ((f (lambda (acc xs)
(if (null? xs)
acc
(f (+ acc (car xs)) (cdr xs))))))
(f 0 xs)))
(sum '(1 2 3)) ; => 6
(define (sum* xs)
(define (f acc xs)
(if (null? xs)
acc
(f (+ acc (car xs)) (cdr xs))))
(f 0 xs))
(sum* '(1 2 3)) ; => 6
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment