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:15] – [(4.0) Lenguaje Imperativo] etanterteaching:cc4101:tareas:2015-2:tarea1 [2015/09/17 10:28] – [(2.0) Programación funcional] 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>
  
-  - (0.8) Utilizando la función ''%%(apply fun args)%%''  de Racket,  implemente la función ''%%(curry-n f)%%'' que dado una función ''f'' retorna su versión currificada. Para obtener la cantidad de parámetros que recibe la función ''%%f%%'', utilice la función ''%%procedure-arity%%'' provista en Racket. Asuma que la función ''%%f%%'' recibe un número fijo de parámetros. Ejemplos: <code scheme>+  - (0.8) Utilizando la función ''%%(apply fun args)%%''  de Racket,  implemente la función ''%%(curry-n f)%%'' que dado una función ''f'' retorna su versión currificada. Para determinar la cantidad de parámetros que espera la función ''%%f%%'', utilice la función ''%%procedure-arity%%'' provista en Racket (puede asumir que la función ''%%f%%'' recibe un número fijo de parámetros). Ejemplos: <code scheme>
 > (define f (curry-n (λ (x y z) (+ x y z))))                                                   > (define f (curry-n (λ (x y z) (+ x y z))))                                                  
 > (((f 2) 5) 20) > (((f 2) 5) 20)