1 /****************************************************************************
3 Alumno: Leandro Lucarella
4 Fecha: lun abr 4 01:16:56 ART 2005
5 ****************************************************************************/
12 % Obtenido de internet porque no me funcionaba el {NewStore}
13 % (http://www.info.ucl.ac.be/people/PVR/ds/booksuppl.oz)
14 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15 % The memory store as used in the exercises
20 if {Not {Dictionary.member D K}} then
28 storeobject(put:Put get:Get size:Size)
30 proc {Put S K X} {S.put K X} end
31 fun {Get S K} {S.get K} end
32 fun {Size S} {S.size} end
33 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
34 % Concatena un 0 al final de la lista
40 % Inserta un 0 al inicio de la lista
41 fun {ShiftRight L} 0|L end
42 % Aplica una operación entre 2 elementos de dos listas
46 {Op H1 H2}|{OpList Op T1 T2}
50 % Calcula variaciones del Triánculo de Pascal
51 fun {GenericPascal Op N}
54 L = {GenericPascal Op N-1}
55 {OpList Op {ShiftLeft L} {ShiftRight L}}
60 % Celda para almacenar cantidad de veces que se llama al FastPascal
62 % Funcion con "memoria"
65 if N > 1 then % Si tenemos que calcular anteriores
66 % Tengo que hacer un local porque si no lo asigno como una
67 % variable al resultado de la función, lo toma como el retorno
68 % de la actual y da error de aridad.
69 local DUMMY in DUMMY = {FasterPascal N-1} end
71 {Put S N {GenericPascal Sum N}}
75 {System.show {FasterPascal 10}}
79 % vim: set et sw=4 sts=4 filetype=oz :