El 21 de febrero de 2011 23:54, Jaime Villate <villate@fe.up.pt> escribió:
On Mon, 2011-02-21 at 22:48 +0100, José Luis Torre Hernández wrote:
> Existe alguna función que sume los elementos de una lista, similar a:
>
> (+ 1 2 3)
Esto no te sirve?:

(%i8) a:[1,2,3,4,5];
(%o8)                 [1, 2, 3, 4, 5]
(%i9) sum(a[i],i,1,length(a));
(%o9)                        15

Saludos,
Jaime


Tengo:

aleaBinomial(n,p):=(x:0, for i from 1 thru n do if i=n then return (x)
                                         else
                                               (if random(1.0)\<less\>p then x:x+1))

ventas:makelist(aleaBinomial(20,0.05), x, 1, diasLaborables)

así  la siguiente expresión funciona como había pensado

            sum(ventas[i],i, 1, length(ventas))

sin embargo, lo  siguiente no me funciona:

           apply("+", ventas)

proporciona:

          apply("+", [ 0,1,1,1,2,2,01,0,0,1,0,1,2,0,0,2,0,1,...])

es decir, evalúa la variable ventas, pero no aplica la función.

Creo que existe algún tipo de QUOTE y EVAL. He probado con la "tide invertida" que se utiliza en los scripts del shell, pero no me funciona.



Muchas gracias por su atención

José Luis