Anonymous user
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
(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}}==
|