Sumatório: imperativo vs funcional

Implementação em Emacs Lisp da soma das componentes de dois vectores.

Duas formas de fazer a mesma coisa em Emacs Lisp, a primeira de uma forma imperativa, a segunda funcional; implementam a soma de um vector.

A primeira: forma imperativa

(defun sum (x)
  "Sum of elements of X."
  (let ((i 0) (aux 0))
    (while (< i (length x))
      (setq aux (+ aux (nth i x))
            i (1+ i)))
    aux))

A segunda: forma funcional

(defun sum (x)
  "Sum of elements of X."
  (cond (x
         (+ (car x) (sum (cdr x))))
        (t 0)))

Mais bonita, esta última!

Palavras chave/keywords: Emacs, Lisp, matemática, programação funcional, programação imperativa, programação

Última actualização/Last updated: 2014-02-20 [14:39]


1999-2014 (ç) Tiago Charters de Azevedo

São permitidas cópias textuais parciais/integrais em qualquer meio com/sem alterações desde que se mantenha este aviso.

Verbatim copying and redistribution of this entire page are permitted provided this notice is preserved.