Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
teaching:cc4101:tareas:2015-2:tarea1 [2015/09/17 10:23] – [(2.0) Programación funcional] etanterteaching:cc4101:tareas:2015-2:tarea1 [2015/09/17 10:36] – [(4.0) Lenguaje Imperativo] etanter
Line 11: Line 11:
  
   - (0.7) Defina una función ''%%(groupby selector lst)%%'' que permita agrupar los elementos de una lista basado en un criterio de selección. Ejemplos: <code scheme>   - (0.7) Defina una función ''%%(groupby selector lst)%%'' que permita agrupar los elementos de una lista basado en un criterio de selección. Ejemplos: <code scheme>
-> (groupby cdr (list '("Scorsese" . 72 ) +> (groupby cdr  
-                     '("Tarantino" . 53) +           '(("Scorsese" . 72 )  
-                     '("John" . 19) +             ("Tarantino" . 53) 
-                     '("Peter" . 72) +             ("John" . 19) 
-                     '("Robert" . 19)))                   +             ("Peter" . 72) 
 +             ("Robert" . 19)))                   
 '((72 ("Scorsese" . 72) ("Peter" . 72)) '((72 ("Scorsese" . 72) ("Peter" . 72))
   (53 ("Tarantino" . 53))   (53 ("Tarantino" . 53))
Line 21: Line 22:
  
 > (groupby (λ (x) (modulo (string->number x) 3)) > (groupby (λ (x) (modulo (string->number x) 3))
-           (list "21" "5" "34" "5" "89" "47" "28"))                    +           '("21" "5" "34" "5" "89" "47" "28"))                    
 '((0 "21") (2 "5" "5" "89" "47") (1 "34" "28")) '((0 "21") (2 "5" "5" "89" "47") (1 "34" "28"))
 </code> </code>
Line 72: Line 73:
   * (1.0) Defina un interprete para el lenguaje, usando una tabla de hash global para manejar el estado de las variables.    * (1.0) Defina un interprete para el lenguaje, usando una tabla de hash global para manejar el estado de las variables. 
   * (0.5) Defina la función ''run :: Prog → Num'' que ejecuta un programa y retorna el valor de una expresión ''return'', o un error si corresponde.   * (0.5) Defina la función ''run :: Prog → Num'' que ejecuta un programa y retorna el valor de una expresión ''return'', o un error si corresponde.
-  * (1.0) Para evitar errores de variables ya definidas y/o no definidas, defina una función ''var-check :: Prog → List[string]'' que analiza el programa (sin ejecutarlo!), y retorna una lista de los errores de variables presentes en el programa. Si el programa no contiene errores, retorna la lista vacía.+  * (1.0) Para evitar errores de variables ya definidas y/o no definidas, defina una función ''var-check :: Prog → List[string]'' que analiza un programa (sin ejecutarlo!), y retorna una lista de los errores de variables presentes en el programa. Si el programa no contiene errores, retorna la lista vacía.
 //Nota: recuerden que para definir una función que procesa una estructura compuesta, tienen que usar funciones auxiliares para los sub-componentes (aquí, programas, instrucciones, expresiones).// //Nota: recuerden que para definir una función que procesa una estructura compuesta, tienen que usar funciones auxiliares para los sub-componentes (aquí, programas, instrucciones, expresiones).//