2011/2/22 CARLOS Enrique CARLEOS Artime <carleos@uniovi.es>
Jaime Villate <villate@fe.up.pt> skribis,
je la 12h5'4" en la 4ª de Ventozo en 163ª [*]:

> Basta que uses:
> (%i3) sumaLista(lista):= if lista=[] then 0 else apply("+", lista)$

¿Por qué el rodeo?

(%i1) apply("+",[]);
(%o1)                                  0




--
 
Hola a Todos:

No existe ninguna razón salvo que first() y rest() parecen funciones más elementales que apply() y un "+"  generalizado para listas; un poco por hacerlo como en lisp con CAR y CDR pero con otra sintaxis.

sumar(lista):= if lista=[] then 0 else  (first(lista)+sumar(rest(lista)))

P.D. Tengo que estudiar el manual para entender el significado del return; yo pensaba que era  como en la mayoría de los lenguajes de programación.


Saludos
José Luis