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 13:42] – laura | introalg:taller08_1 [2018/08/10 03:03] (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 59: | Línea 59: | ||
-- retornará 1 si x es positivo, -1 si es negativo y 0 en cualquier otro caso. | -- 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 '': | + | Para crear un //script// basta con invocar el comando para editar un (nuevo) archivo '': |
+ | |||
+ | Hugs.Base> | ||
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 70: | 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 91: | 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 134: | Línea 136: | ||
* Precedencia ('' | * Precedencia ('' | ||
* Tipos ('' | * Tipos ('' | ||
- | * Sintáxis | + | * Sintaxis |
Línea 168: | 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 188: | Línea 197: | ||
(5,-1) | (5,-1) | ||
+ | Haskell también maneja listas de manera directa, pero lo veremos más adelante. | ||
Línea 193: | 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 245: | 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.1207662141.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)