Pascal's triangle: Difference between revisions

Clojure
(Clojure)
(Clojure)
Line 47:
end Pascals_Triangle;
</ada>
 
=={{header|Clojure}}==
 
For n < 1, prints nothing, always returns nil. Copied from the Common Lisp implementation abovebelow, but with local functions and explicit tail-call-optimized recursion (recur).
(defn pascal [n]
(let [newrow (fn newrow [lst ret]
(if lst
(recur (rest lst)
(conj ret (+ (first lst) (or (second lst) 0))))
ret))
genrow (fn genrow [n lst]
(when (< 0 n)
(do (println lst)
(recur (dec n) (conj (newrow lst []) 1)))))]
(genrow n [1])))
(pascal 4)
 
=={{header|Common Lisp}}==
Line 64 ⟶ 80:
'(1)
(cons (+ (car l) (cadr l)) (newrow (cdr l)))))</pre>
 
=={{header|Clojure}}==
 
For n < 1, prints nothing, always returns nil. Copied from the Common Lisp implementation above, but with local functions and explicit tail-call-optimized recursion (recur).
(defn pascal [n]
(let [newrow (fn newrow [lst ret]
(if lst
(recur (rest lst)
(conj ret (+ (first lst) (or (second lst) 0))))
ret))
genrow (fn genrow [n lst]
(when (< 0 n)
(do (println lst)
(recur (dec n) (conj (newrow lst []) 1)))))]
(genrow n [1])))
(pascal 4)
 
=={{header|D}}==
Anonymous user