Haskell Hero
Haskell Hero es un manual interactivo del lenguaje Haskell para principiantes.
|
Expresiones¿Qué es una expresión?La expresión es todo lo que Hugs toma sin quejas y que no es una orden.
En el método de cajas vamos a enunciar las expresiones con varios cuerpos geométricos (un cilindro, un prisma, también podéis esperar un tren). Vamos a explicarlo más tarde. La representación de expresiones con cajas La notación de prefijo / infijoEn Haskell usamos dos tipos de notaciones de expresiones. La de prefijo y la de infijo. Ejemplos:
La notación infija: La notación infija
La notación prefija: La notación prefija
Los signos que identifican funciones unarias o binarias también pueden llamarse operadores. Conocemos dos tipos de operadores:
Todas las expresiones escritas en la notación infija también se pueden escribir en la notación prefija. Al revés funciona solo con funciones binarias. La expresión en la notación infija con un operador no alfanumérico la convertimos a la notación prefija de esta manera: ponemos el operador entre paréntesis y lo escribimos delante de los parámetros. 3 + 5 ==> (+) 3 5 La expresión en notación prefija con el operador alfanumérico la convertimos a la notación infija de esta manera: ponemos el operador entre acentos hacia la derecha. div 8 3 ==> 8 `div` 3 No hay diferencia en el cálculo entre la notación infija y prefija. Podéis probarlo en Hugs. Ambas son procesadas de misma manera, solo las funciones escritas en notación prefija tienen una prioridad más alta. Esto significa que en la expresión 3 * div 5 2 se calcula primero la división entera que está escrita en notación prefija y después la multiplicación escrita en notación infija. SubexpresionesTodas las expresiones las podemos dividir en subexpresiones. Ejemplo: Para la mejor división de la expresión en subexpresiones convertimos la expresión a la notación prefija. Subexpresiones son:
3 + 5 tiene 5 subexpresiones en total.
La expresión más compleja:
(zipWith (*) [1,2] [3,4]) ++ [5,6] tiene entonces 11 subexpresiones.
|