Semántica denotacional de haskell

Download Report

Transcript Semántica denotacional de haskell

Sintaxis

1. Estructuras básica 2. Construcciones de expresiones 3. Instrucciones de control

Estructura Básica

       La forma de escribir una función en Haskell se define a continuación: * Definición de signatura: Se especifican los tipos de los datos de entrada y salida que posee la función.

* Implementación del cuerpo de la función: Se especifica la descripción de la función para transformar los datos de entrada en los datos de salida.

En la definición de la signatura se utiliza la siguiente sintaxis: nombre_funcion::tipo_argumento->tipo_resultado En la definición del cuerpo de la función la sintaxis es como sigue: nombre_funcion nombre_argumento=

Ejemplo de Estructura

Fase 1 Fase 2 Fase 3

numero :: Integer –> Integer numero x = x+5

Construcción de expresiones

             La ejecución de un programa en Haskell se realiza a través de la evaluación de expresiones (términos sintácticos) que denotan valores (entidades abstractas que entendemos como respuestas). Ejemplos de expresiones son: 'a' 3 + 4 (5 > 0, 9) cuyos valores asociados son la letra a, el número 7 y el par ordenado cuya primera componente es el valor verdadero y al segunda el número 9.

Así como podemos asociar las entidades reales o matemáticas con un conjunto, las expresiones en Haskell tienen asociado un tipo. El símbolo :: sirve para indicar explícitamente el tipo de las expresiones.

'a' :: Char 3 + 4 :: Integer (5 > 0, 9) :: (Bool, Integer) El lenguaje tiene un conjunto de tipos predefinidos, de los cuales ya mencionamos algunos: Tipos simples como Integer, Double, Char, Bool, etc.

Tuplas de cualquier longitud. Por ejemplo, (2 * 5 +1, 4 >0, 22.1) es de tipo (Integer, Bool, Double).

Instrucciones de control

 Las instrucciones de control son todas aquellas que alteran la ejecución secuencial de las instrucciones, como por ejemplo: IF  En este lenguaje funcional se puede utilizar la sentencia condicional IF del modo siguiente:  if then else  Para realizar bucles y otros tipos de estructuras de control, usaremos el concepto de recurrencia.

Simulación de

Recurrencia

función Argumento 4 Argumento 3 Recurrencia Argumento 2 Argumento 1

Ejemplo Recurrencia

 Ejemplo de recurrencia usando “guardas”  dividir x y  | (x >= y) = 1 + dividir (x - y) y  | otherwise = 0  Usando guardas no es necesario asignar tipos a los datos.