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
Last revisionBoth sides next revision
teaching:cc4101:tareas:2016-2:tarea3 [2016/11/30 16:14] fmossoteaching:cc4101:tareas:2016-2:tarea3 [2017/11/07 10:55] folmedo
Line 16: Line 16:
 <code scheme> <code scheme>
 <s-expr> ::= <num> <s-expr> ::= <num>
-         {+ <s-expr> <s-expr>} +         (+ <s-expr> <s-expr>) 
-         {- <s-expr> <s-expr>} +         (- <s-expr> <s-expr>) 
-         {if0 <s-expr> <s-expr> <s-expr>}+         (if0 <s-expr> <s-expr> <s-expr>)
  
 </code> </code>
Line 28: Line 28:
   -  **''%%run :: String -> String%%''** que toma un programa fuente y retorna la representación en String del valor resultante.   -  **''%%run :: String -> String%%''** que toma un programa fuente y retorna la representación en String del valor resultante.
  
-Al igual que en la tarea pasada, usted tiene total libertad en como implementar la tarea.+Al igual que en la tarea pasada, usted tiene total libertad en como implementar cada una de estas funciones.
  
 ====== Funciones (2pt)====== ====== Funciones (2pt)======
  
-Usted deberá extender su lenguaje con funciones de primera clase, estas deben tener régimen de evaluación eager y scope estático. También deben implementar variables, note que los mensajes de error son un String, su tarea debe siempre retornar un String. +Usted deberá extender su lenguaje con funciones de primera clase, estas deben tener régimen de evaluación eager y scope estático. Note que los mensajes de error son un String, su tarea debe siempre retornar un String. 
  
 <code scheme> <code scheme>
 <s-expr> ::= ... <s-expr> ::= ...
-         {with {<id> <s-expr><s-expr>}+         (with (<id> <s-expr><s-expr>)
          | <id>          | <id>
-         {fun {<id><s-expr>} +         (fun (<id><s-expr>) 
-         {<s-expr> <s-expr>}+         (<s-expr> <s-expr>)
  
 </code> </code>
Line 53: Line 53:
 <code scheme> <code scheme>
 <s-expr> ::= ... <s-expr> ::= ...
-         {seqn <s-expr> <s-expr>} +         (seqn <s-expr> <s-expr>) 
-         {set <id> <s-expr>}+         (set <id> <s-expr>)
 </code> </code>
  
Line 72: Line 72:
  
 <code Java> <code Java>
-java tarea3 "{+ 4 3}"+java tarea3 "(+ 4 3)"
 >"7" >"7"
 </code> </code>
  
 <code Java> <code Java>
-java tarea3 "{fun {xx}"+java tarea3 "(fun (xx)"
 >"Function" >"Function"
 </code> </code>
Line 83: Line 83:
 Ejemplos con C: Ejemplos con C:
 <code C> <code C>
-./Tarea3 "{{{fun {xx} +./Tarea3 "(((fun (xx) 
-        {fun {x} {+ x 5}}} +        (fun (x) (+ x 5))) 
-       3}"+       3)"
 >"8" >"8"
 </code> </code>
  
 <code C> <code C>
-./Tarea3 "{8 10}+./Tarea3 "(8 10)
->"error: expresión inválida {8 10}"+>"error: expresión inválida (8 10)"
 </code> </code>
  
 <code C> <code C>
-./Tarea3 "{with {x 3} +./Tarea3 "(with (x 3) 
-             {with {{fun {y} {+ x y}}} +             (with ((fun (y) (+ x y))) 
-                   {with {x 5} +                   (with (x 5) 
-                         {f 4}}}}"+                         (f 4))))"
 >"7" >"7"
 </code> </code>
- 
- 
- 
- 
- 
- 
-