introalg:taller08_1
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| introalg:taller08_1 [2008/04/08 10:39] – laura | introalg:taller08_1 [2025/11/15 13:47] (actual) – editor externo 127.0.0.1 | ||
|---|---|---|---|
| Línea 44: | Línea 44: | ||
| Hugs.Base> | Hugs.Base> | ||
| [Leaving Hugs] | [Leaving Hugs] | ||
| - | [nicolasw@azul Taller]$ | + | [laura@azul Taller]$ |
| Así volvemos al modo normal de la computadora. | Así volvemos al modo normal de la computadora. | ||
| Línea 56: | Línea 56: | ||
| sgn :: Int → Int | sgn :: Int → Int | ||
| - | -- dado un entero x, //sgn// retorna su signo, de la siguiente forma: retornará 1 si x es positivo, -1 si es negativo y 0 en cualquier otro caso. | + | -- dado un entero x, //sgn// retorna su signo, de la siguiente forma: |
| + | -- retornará 1 si x es positivo, -1 si es negativo y 0 en cualquier otro caso. | ||
| + | |||
| + | Para crear un //script// basta con invocar el comando para editar un (nuevo) archivo '': | ||
| + | |||
| + | Hugs.Base> | ||
| - | Para crear un //script// basta con invocar el comando para editar un (nuevo) archivo '': | ||
| Una posible solución para el problema de la función signo es la siguiente: | Una posible solución para el problema de la función signo es la siguiente: | ||
| Línea 69: | Línea 73: | ||
| Luego de guardar el programa, hay cargarlo para que el intérprete Hugs pueda empezar a usar la nueva función que hemos creado. | Luego de guardar el programa, hay cargarlo para que el intérprete Hugs pueda empezar a usar la nueva función que hemos creado. | ||
| - | Hugs.Base> | ||
| Hugs.Base> | Hugs.Base> | ||
| ERROR " | ERROR " | ||
| - | Pero el intérprete indica un error! Por qué? Porque | + | Pero el intérprete indica un error! Por qué? Porque |
| Las traducciones de los símbolos son más o menos directas, de todas formas preparamos una tabla de [[http:// | Las traducciones de los símbolos son más o menos directas, de todas formas preparamos una tabla de [[http:// | ||
| Línea 90: | Línea 93: | ||
| Main> | Main> | ||
| - | Ahora sí, la función es correcta y por ello el intérprete nos muestra el prompt | + | Ahora sí, la función es correcta y por ello el intérprete nos muestra el prompt |
| Podemos probar la nueva función con //casos de test// para ganar confianza en su **corrección**. | Podemos probar la nueva función con //casos de test// para ganar confianza en su **corrección**. | ||
| Línea 133: | Línea 136: | ||
| * Precedencia ('' | * Precedencia ('' | ||
| * Tipos ('' | * Tipos ('' | ||
| - | * Sintáxis | + | * Sintaxis |
| Línea 167: | Línea 170: | ||
| Esta maquinaria **impide** que escribamos cualquier expresión que esté mal tipada. | Esta maquinaria **impide** que escribamos cualquier expresión que esté mal tipada. | ||
| + | |||
| + | Todas las funciones suelen ir encabezadas por su signatura, es decir, el nombre de la función junto al tipo de sus parámetros y resultado. El nombre va seguido de ''::'' | ||
| + | |||
| + | sgn :: Int -> Int | ||
| + | reverse :: [a] -> [a] | ||
| + | map :: (a -> b) -> [a] -> [b] | ||
| ===== Tuplas ===== | ===== Tuplas ===== | ||
| - | Haskell maneja n-uplas de manera directa. | + | Haskell maneja n-uplas de manera directa. |
| Incorporamos a '' | Incorporamos a '' | ||
| Línea 187: | Línea 197: | ||
| (5,-1) | (5,-1) | ||
| + | Haskell también maneja listas de manera directa, pero lo veremos más adelante. | ||
| Línea 192: | Línea 203: | ||
| A manera de ejemplo veamos el ejercicio 8.7 del apunte, donde tenemos que definir una función muy útil para cualquier aparato que maneje un calendario (relojes, celulares, PDAs, computadoras, | A manera de ejemplo veamos el ejercicio 8.7 del apunte, donde tenemos que definir una función muy útil para cualquier aparato que maneje un calendario (relojes, celulares, PDAs, computadoras, | ||
| - | La signatura | + | La signatura es //bisiesto: Int -> Bool//, y es un predicado que devuelve //true// si el año es bisiesto y //false// en caso contrario. |
| Recordemos cuando un año es [[http:// | Recordemos cuando un año es [[http:// | ||
| Línea 244: | Línea 255: | ||
| Para realizar en lo que resta de la clase. | Para realizar en lo que resta de la clase. | ||
| - | * Definir la función //sumaRat (a,b) (c,d)//, //sumaRat : (Int,Int) -> (Int,Int) -> (Int,Int)// que suma dos números racionales.\\ No es necesario realizar ninguna simplificación al resultado. | + | * Definir la función //sumaRat (a,b) (c,d)//, //sumaRat : (Int,Int) -> (Int,Int) -> (Int,Int)// que suma dos números racionales. |
| + | |||
| + | No es necesario realizar ninguna simplificación al resultado. | ||
| probar con (1,2) y (1,2), (1,4) y (1,4). | probar con (1,2) y (1,2), (1,4) y (1,4). | ||
introalg/taller08_1.1207661955.txt.gz · Última modificación: (editor externo)
