(defn meu-reduce
([funcao dado]
(meu-reduce funcao dado 0))
([funcao dado ultimo-valor]
(if (not (empty? dado))
(do
(let [f (first dado)
r (funcao ultimo-valor f)]
(recur funcao (next dado) r)))
ultimo-valor)))