Haskell
Cadenas
Esta guía rápida abarca los elementos fundamentales del lenguaje Haskell: sintaxis, palabras clave
y otros elementos. Se presenta como un archivo
ejecutable de Haskell y también como un documento para impresión. Cargue la fuente en su intérprete favorito para jugar con los ejemplos de
código mostrados.
Sintaxis Básica
Un comentario de una sola líneacomienza con ‘--’
y se extiende hasta el final de la línea. Los comentarios de varias líneas comienzan con ’{-’ y se
extienden hasta ’-}’. Los comentarios pueden ser
anidados.
Los comentarios antes de las definiciones de
función deben comenzar con ‘{- |’ y los que están junto a los tipos de parámetros con ‘-- ^’ para
que sean compatibles con Haddock, un sistema
para documentar código en Haskell.Palabras Reservadas
Las siguientes palabras están reservadas para
Haskell. Es un error de sintaxis darle a una variable o a una función uno de estos nombres.
case
class
data
deriving
do
else
if
•
•
•
•
•
•
•
c 2009 Justin Bailey.
Cadenas en varias líneas
Normalmente, es
un error de sintaxis si una cadena contiene caracteres de fin de línea. Eso es, esto es un errorde
sintaxis:
string1 = "My long
string."
Comentarios
•
•
•
•
•
•
•
• "abc" – Cadena Unicode string, azúcar sintáctica de ['a','b','c'].
• 'a' – Un solo caracter.
import
in
infix
infixl
infixr
instance
let
•
•
•
•
•
•
of
module
newtype
then
type
where
Se pueden emplear barras diagonales inversas
(‘\’) para hacer “escape” de un fin de línea:
Códigosde escape
Los siguientes códigos de
escape pueden ser utilizados en caracteres o cadenas:
• \n, \r, \f, etc. – Los códigos estándar para
fin de línea, retorno de carro, avance de
línea, etc.
• \72, \x48,
texto110 – Un caracter con el valor 72 en decimal, hexadecimal y octal, respectivamente.
• \& – El caracter de escape “null”, es utilizado
para que los códigos de escape numéricos puedanaparecer junto de las literales
numéricas. Es equivalente a “” y por lo tanto
no puede ser utilizado en literales de caracter.
Números
string1 = "My long \
\string."
El área entre las barras diagonales inversas es ignorada. Los fines de línea en la cadena deben ser
representados explícitamente:
string2 = "My long \n\
\string."
Eso es, string1 evalúa como
My long string.
Mientrasstring2 evalúa como:
My long
string.
1
•
•
•
•
•
1 – Entero o valor de punto flotante.
1.0, 1e10 – Valor de punto flotante.
0o1, 0O1 – Valor octal.
0x1, 0X1 – Valor hexadecimal.
-1 – Número negativo; el signo de menos
(“-”) no puede ir separado del número.
Enumeraciones
• [1..10] – Lista de números – 1, 2, . . ., 10.
• [100..] – Lista infinita de números – 100,
101, 102, . .. .
• [110..100] – Lista vacía; los rangos solamente avanzan hacia adelante.
• [0, -1 ..] – Enteros negativos.
• [-110..-100] – Error de sintaxis; necesita
[-110.. -100] por los negativos.
• [1,3..99], [-1,3..99] – Lista de 1 a 99, de
2 en 2; y de -1 a 99, de 4 en 4.
jgbailey@codeslower.com
De hecho, se puede usar cualquier valor que esté
en la clase Enum:
• ['a' .. 'z'] – Lista ofcaracteres – a, b,
. . ., z.
• [1.0, 1.5 .. 2] – [1.0,1.5,2.0].
• [UppercaseLetter ..] – Lista de valores
GeneralCategory (en Data.Char).
Listas & Tuplas
• [] – Lista vacía.
• [1,2,3] – Lista de tres números.
• 1 : 2 : 3 : [] – Forma alterna de escribir
listas usando “cons” (:) y “nil” ([]).
• "abc" – Lista de tres caracteres (las cadenas
son listas).
• 'a' : 'b' : 'c' : [] – Listade caracteres
(lo mismo que "abc").
• (1,"a") – Tupla de dos elementos, un
número y una cadena.
• (head, tail, 3, 'a') – Tupla de cuatro elementos, dos funciones, un número y un caracter.
Regla “Layout”, llaves y punto y comas
Se puede escribir Haskell utilizando llaves y punto
y comas, igual que en C. Sin embargo, nadie lo
hace. En lugar de eso se emplea la regla “layout”,
donde se...
Regístrate para leer el documento completo.