diff options
Diffstat (limited to 'pia')
| -rw-r--r-- | pia/n4.lyx | 630 | ||||
| -rw-r--r-- | pia/n5.lyx | 214 | ||||
| -rw-r--r-- | pia/n6.lyx | 53 | ||||
| -rw-r--r-- | pia/n7.lyx | 45 | 
4 files changed, 596 insertions, 346 deletions
| @@ -745,7 +745,7 @@ ghci  \series bold  sesión  \series default - es la secuencia de iteraciones entre el usuario y este programa. + es la secuencia de interacciones entre el usuario y este programa.   Las definiciones también se pueden guardar en ficheros, generalmente con   extensión   \family typewriter @@ -1220,8 +1220,12 @@ El tipo  \emph on  fuente  \emph default - ->  + ->  \emph on + +\begin_inset space ~ +\end_inset +  resultado  \family default  \emph default @@ -1259,8 +1263,8 @@ estricta  \series bold  iguales  \series default - si devuelven los mismos resultados para los mismos argumentos, y el compilador - es libre de cambiar una función por otra igual. + si devuelven los mismos resultados para los mismos argumentos, y entonces + el compilador es libre de cambiar una por otra.   Normalmente las funciones están currificadas, pues esto reduce el número   de paréntesis y permite aplicar una función de varios argumentos a menos   argumentos para obtener otra función que puede ser útil por sí misma. @@ -1421,7 +1425,7 @@ tuplas  \series bold  listas  \series default -, secuencias finitas de elementos del mismo tipo escrito entre corchetes, +, secuencias finitas de elementos del mismo tipo, escrito entre corchetes,   y el   \series bold  tipo unidad @@ -1456,7 +1460,7 @@ atype /=  \begin_inset Quotes crd  \end_inset - type  + type)   \begin_inset Quotes cld  \end_inset @@ -1563,7 +1567,12 @@ data  \begin_inset Quotes crd  \end_inset - constrs [deriving] + constrs +\end_layout + +\begin_layout Plain Layout + +           [deriving]  \end_layout  \begin_layout Plain Layout @@ -1581,7 +1590,12 @@ constrs = constr *(  \begin_layout Plain Layout -constr = conid *atype / (btype /  +constr = conid *atype +\end_layout + +\begin_layout Plain Layout + +       / (btype /   \begin_inset Quotes cld  \end_inset @@ -1619,11 +1633,23 @@ constr  \family typewriter  atype  \family default + o  +\family typewriter +btype +\family default   etiquetado con el   \family typewriter  conid  \family default -, o bien a un tipo unipuntual con ese nombre, y el tipo  + o  +\family typewriter +conop +\family default +, o bien a un tipo unipuntual con nombre  +\family typewriter +conid +\family default +, y el tipo   \family typewriter  simpletype  \family default @@ -1741,7 +1767,7 @@ Cada  var  \family default   define un campo del tipo producto, y por cada una se crea una función del - tipo definido al tipo de la variable que devuelve el valor en esa posición + tipo definido al tipo de la variable, que devuelve el valor en esa posición   si la variable es de la variante   \family typewriter  con @@ -1755,8 +1781,8 @@ con  \series bold  tipo recursivo  \series default - es uno que se tiene al mismo en la parte derecha de la definición, consiguiendo - valores recursivos. + es uno que se tiene a sí mismo en la parte derecha de la definición, consiguien +do valores recursivos.  \end_layout  \begin_layout Standard @@ -2002,7 +2028,12 @@ inst = gtycon /  \begin_inset Quotes crd  \end_inset - /  + +\end_layout + +\begin_layout Plain Layout + +     /   \begin_inset Quotes cld  \end_inset @@ -2026,7 +2057,7 @@ inst = gtycon /  \begin_inset Quotes crd  \end_inset - / +  \end_layout  \begin_layout Plain Layout @@ -2130,7 +2161,7 @@ varid  \family typewriter  conid  \family default - y debe aparecer alguna vez en el tipo. + y debe aparecer alguna vez en el tipo asignado.   Una   \series bold  declaración de instancia @@ -2147,8 +2178,11 @@ inst  \family typewriter  qconid  \family default - y da las definiciones de los vínculos establecidos por la clase cuando - el tipo  + y da las definiciones, llamadas  +\series bold +métodos +\series default +, de los vínculos establecidos por la clase cuando el tipo   \family typewriter  varid  \family default @@ -2156,10 +2190,6 @@ varid  \family typewriter  inst  \family default -, llamadas  -\series bold -métodos -\series default  .   Los nombres de métodos son miembros de una única clase, lo que evita conflictos   entre nombres. @@ -2302,7 +2332,7 @@ qconid  .   Esto es necesario cuando en la definición de una función se quieren usar   funciones definidas en una clase, y de hecho el tipo de estas funciones - tiene una restricción en su contexto. + en el entorno global tiene una restricción en su contexto.  \end_layout  \begin_layout Standard @@ -2313,8 +2343,12 @@ class  ...  \family typewriter - =>  + =>  \emph on + +\begin_inset space ~ +\end_inset +  Foo a  \family default  \emph default @@ -2450,10 +2484,10 @@ Haskell tiene  disciplina de tipos  \series default  , consistente en que toda expresión bien formada tiene un tipo deducible - a partir de sus subexpresiones y el contexto, y las expresiones a las que - no se puede asignar un tipo están mal formadas. + a partir de sus subexpresiones y los tipos de los vínculos en el contexto, + y las expresiones a las que no se puede asignar un tipo están mal formadas.   Esto permite detectar errores antes de la evaluación y fuerza al programador - se plantearse tipos apropiados para los valores, ayudando a diseñar programas + a plantearse tipos apropiados para los valores, ayudando a diseñar programas   claros y bien estructurados.  \end_layout @@ -2656,114 +2690,7 @@ lexp qop infixexp  (qop) lexp infixexp  \family default  , aunque realmente distintos operadores tienen distinta precedencia del - 0 al 9 y asociatividad. - El operador  -\family typewriter -- -\family default - es el único unario, y representa la negación. -\end_layout - -\begin_layout Standard -Una  -\series bold -sección -\series default - es un operador con una expresión delante o detrás: -\end_layout - -\begin_layout Standard -\begin_inset listings -inline false -status open - -\begin_layout Plain Layout - -aexp /=  -\begin_inset Quotes cld -\end_inset - -( -\begin_inset Quotes cld -\end_inset - - infixexp qop  -\begin_inset Quotes cld -\end_inset - -) -\begin_inset Quotes crd -\end_inset - - /  -\begin_inset Quotes cld -\end_inset - -( -\begin_inset Quotes cld -\end_inset - - ! -\begin_inset Quotes crd -\end_inset - -- -\begin_inset Quotes crd -\end_inset - - qop infixexp  -\begin_inset Quotes cld -\end_inset - -) -\begin_inset Quotes crd -\end_inset - - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard - -\family typewriter -( -\emph on -infixexp qop -\emph default -) -\family default - equivale a  -\family typewriter - -\backslash -y ->  -\emph on -infixexp qop -\emph default - y -\family default - y  -\family typewriter -( -\emph on -qop infixexp -\emph default -) -\family default - a  -\family typewriter - -\backslash -x -> x  -\emph on -qop infixexp -\family default -\emph default -. + 0 al 9 y asociatividad por la izquierda o la derecha.  \end_layout  \begin_layout Standard @@ -2949,7 +2876,7 @@ La primera sintaxis indica una tupla, la segunda una lista de un tamaño  \family typewriter  ()  \family default - el tipo unidad,  + el único elemento del tipo unidad,   \family typewriter  []  \family default @@ -2958,8 +2885,8 @@ La primera sintaxis indica una tupla, la segunda una lista de un tamaño  qconid  \family default   es un constructor de tipo, que actúa como una función currificada que recibe - tantos parámetros como aparezcan en la definición y del tipo correcto y - devuelve un elemento del tipo definido. + tantos parámetros como aparezcan en su definición y del tipo correcto y + devuelve un elemento del tipo correspondiente.   Finalmente,   \family typewriter  (:) :: a -> [a] -> [a] @@ -2999,6 +2926,141 @@ an  .  \end_layout +\begin_layout Standard +Una  +\series bold +sección +\series default + es un operador con una expresión delante o detrás: +\end_layout + +\begin_layout Standard +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +aexp /=  +\begin_inset Quotes cld +\end_inset + +( +\begin_inset Quotes cld +\end_inset + + infixexp qop  +\begin_inset Quotes cld +\end_inset + +) +\begin_inset Quotes crd +\end_inset + + /  +\begin_inset Quotes cld +\end_inset + +( +\begin_inset Quotes cld +\end_inset + + ! +\begin_inset Quotes crd +\end_inset + +- +\begin_inset Quotes crd +\end_inset + + qop infixexp  +\begin_inset Quotes cld +\end_inset + +) +\begin_inset Quotes crd +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + + +\family typewriter +( +\emph on +infixexp qop +\emph default +) +\family default + equivale a  +\family typewriter + +\backslash +y -> +\begin_inset space ~ +\end_inset + + +\emph on +infixexp qop +\emph default + y +\family default + y  +\family typewriter +( +\emph on +qop infixexp +\emph default +) +\family default + a  +\family typewriter + +\backslash +x -> +\begin_inset space ~ +\end_inset + +x  +\emph on +qop infixexp +\family default +\emph default +. +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout +  \begin_layout Section  Patrones  \end_layout @@ -3060,7 +3122,7 @@ _  \begin_inset Quotes crd  \end_inset - / gcon / + / gcon  \end_layout  \begin_layout Plain Layout @@ -3113,7 +3175,7 @@ _  \begin_inset Quotes crd  \end_inset - / +  \end_layout  \begin_layout Plain Layout @@ -3542,7 +3604,7 @@ True  \family typewriter  gdpat  \family default - en el mismo contexto y devuelve su valor, o bien devuelve  + en el contexto extendido y devuelve su valor, o bien devuelve   \begin_inset Formula $\bot$  \end_inset @@ -3557,14 +3619,22 @@ alt  \family default   de la forma   \family typewriter -->  +-> +\begin_inset space ~ +\end_inset + +  \emph on  exp  \family default  \emph default   equivale a   \family typewriter -| True ->  +| True -> +\begin_inset space ~ +\end_inset + +  \emph on  exp  \family default @@ -3628,11 +3698,19 @@ case  \emph on  condition  \emph default - of { True ->  + of { True -> +\begin_inset space ~ +\end_inset + +  \emph on  when-true  \emph default -; False ->  +; False -> +\begin_inset space ~ +\end_inset + +  \emph on  when-false  \emph default @@ -3724,20 +3802,37 @@ t  \begin_inset Formula $_{1}$  \end_inset - ->  -\family default + ->  \emph default + +\begin_inset space ~ +\end_inset + + +\family default  ...  \family typewriter  \emph on - -> t + -> +\emph default + +\begin_inset space ~ +\end_inset + + +\emph on +t  \begin_inset Formula $_{n}$  \end_inset  \emph default - ->  + -> +\begin_inset space ~ +\end_inset + +  \emph on  r  \family default @@ -3777,6 +3872,12 @@ t  \family default  \emph default  . + Los  +\begin_inset Formula $\text{\emph{\texttt{t}}}_{i}$ +\end_inset + + y el contexto son los más generales posibles para que los patrones y la + expresión sean legales, salvo que se asigne un tipo más restringido.  \end_layout  \begin_layout Section @@ -4021,7 +4122,35 @@ z  z  \family default  \emph default - sin incluirlo. + sin incluirlo, y  +\family typewriter +[ +\emph on +x +\emph default +.. +\emph on +z +\emph default +] +\family default + equivale a  +\family typewriter +[ +\emph on +x +\emph default +, +\emph on +x +\emph default ++1.. +\emph on +z +\emph default +] +\family default +.  \end_layout  \begin_layout Standard @@ -4163,7 +4292,7 @@ Q  \emph default  ]  \family default -, para cada elemento de la lista  + evalúa, para cada elemento de la lista   \family typewriter  \emph on  f @@ -4175,7 +4304,7 @@ f  p  \family default  \emph default -, evalúa  +,   \family typewriter  [  \emph on @@ -4187,8 +4316,8 @@ Q  \emph default  ]  \family default - en un entorno extendido por los vínculos del encaje, y concatena los resultados -, y  +, en un entorno extendido por los vínculos del encaje, y concatena los resultado +s, y   \family typewriter  [  \emph on @@ -4381,7 +4510,11 @@ rest  \emph on  exp  \emph default - >> do {  + >> +\begin_inset space ~ +\end_inset + +do {   \emph on  rest  \emph default @@ -4414,7 +4547,11 @@ exp  \emph on  pat  \emph default - -> do {  + -> +\begin_inset space ~ +\end_inset + +do {   \emph on  rest  \emph default @@ -4439,8 +4576,8 @@ definición  asignación de tipo  \series default   opcional, que indica el tipo de la variable, y una serie de ecuaciones. - La asignación del tipo debe corresponder o al tipo inferido o a una restricción -, no se puede dar más de una asignación a la misma variable y, si se asigna + La asignación del tipo debe corresponder o al tipo inferido o a una restricción. + No se puede dar más de una asignación a la misma variable y, si se asigna   un tipo más restringido, no se puede usar la variable como si tuviera el   tipo más general.  \end_layout @@ -4818,7 +4955,12 @@ export = qvar / qconid [  \begin_inset Quotes crd  \end_inset - /  + +\end_layout + +\begin_layout Plain Layout + +       /   \begin_inset Quotes cld  \end_inset @@ -4916,6 +5058,95 @@ module  cname = var / con  \end_layout +\end_inset + + +\end_layout + +\begin_layout Standard +Haskell organiza los elementos en módulos, uno por fichero, cada uno con + un nombre único y un contexto global formado por los vínculos establecidos + en el módulo y los que se importan de otros. +  +\end_layout + +\begin_layout Standard +Una  +\series bold +entidad +\series default + es un vínculo importado o exportado por un módulo, con un nombre (que no + incluye el nombre del módulo) y un valor. +\end_layout + +\begin_layout Standard +Se exportan las entidades indicadas por  +\family typewriter +exports +\family default +:  +\family typewriter +\emph on +qvar +\family default +\emph default + para una variable,  +\family typewriter +\emph on +qconid +\family default +\emph default + para un tipo o clase,  +\family typewriter +\emph on +qconid +\emph default +(..) +\family default + para el tipo y todos sus constructores o la clase y todos sus métodos; +  +\family typewriter +\emph on +qconid +\emph default +( +\emph on +cname +\emph default +,  +\family default +... +\family typewriter +) +\family default + para el tipo y los constructores indicados, y  +\family typewriter +\emph on +qconid +\emph default +( +\emph on +qvar +\emph default +,  +\family default +... +\family typewriter +) +\family default + para el tipo y los métodos indicados. + Si no hay un  +\family typewriter +exports +\family default +, se exportan todos los vínculos definidos en el módulo. +\end_layout + +\begin_layout Standard +\begin_inset listings +inline false +status open +  \begin_layout Plain Layout  body /=  @@ -5136,85 +5367,6 @@ import = var / qconid[  \end_layout  \begin_layout Standard -Haskell organiza los elementos en módulos, uno por fichero, cada uno con - un nombre único y un contexto global formado por los vínculos establecidos - en el módulo y los que se importan de otros. -  -\end_layout - -\begin_layout Standard -Una  -\series bold -entidad -\series default - es un vínculo importado o exportado por un módulo, con un nombre que no - incluye el nombre del módulo y un valor. -\end_layout - -\begin_layout Standard -Se exportan las entidades indicadas por  -\family typewriter -exports -\family default -:  -\family typewriter -\emph on -qvar -\family default -\emph default - para una variable,  -\family typewriter -\emph on -qconid -\family default -\emph default - para un tipo o clase,  -\family typewriter -\emph on -qconid -\emph default -(..) -\family default - para el tipo y todos sus constructores o la clase y todos sus métodos; -  -\family typewriter -\emph on -qconid -\emph default -( -\emph on -cname -\emph default -,  -\family default -... -\family typewriter -) -\family default - para el tipo y los constructores indicados, y  -\family typewriter -\emph on -qconid -\emph default -( -\emph on -qvar -\emph default -,  -\family default -... -\family typewriter -) -\family default - para el tipo y los métodos indicados. - Si no hay un  -\family typewriter -exports -\family default -, se exportan todos los vínculos definidos en el módulo. -\end_layout - -\begin_layout Standard  Una   \family typewriter  impdecl @@ -5264,12 +5416,12 @@ entidad  módulo  \family default  \emph default - es el nombre del módulo del que se importa o el que se indica después de + es el nombre del módulo del que se importa o el que se indica detrás de  \family typewriter  as  \family default - si aparece. + si este aparece.  \end_layout  \begin_layout Standard @@ -153,7 +153,12 @@ Cuando se indica  ...  \family default - en código significa que no se puede definir en Haskell. + en código significa que no se puede definir en Haskell, y cuando se indica + con  +\family typewriter +,,, +\family default + significa que sería demasiado engorroso.   Si se define que un tipo es de una clase, también lo es de sus superclases,   y si no se da la definición de la instancia de superclase es porque no   se puede definir en Haskell. @@ -186,27 +191,31 @@ newtype  \family typewriter  (a,b)  \family default - y  +,   \family typewriter  (a,b,c)  \family default + y  +\family typewriter +[a] +\family default   implementan   \family typewriter  Eq  \family default -,  + y   \family typewriter  Ord  \family default - y  + como se indica, las tres primeras implementan también   \family typewriter  Bounded  \family default - como se indica, y  + y   \family typewriter  ()  \family default - también implementa  + implementa también   \family typewriter  Enum  \family default @@ -236,6 +245,10 @@ class Eq a where  {-# MINIMAL (==) | (/=) #-}  \begin_layout Plain Layout +\end_layout + +\begin_layout Plain Layout +      x /= y = not (x == y)  \end_layout @@ -454,7 +467,7 @@ a  b  \family default  \emph default -,  + según la definición por defecto,   \family typewriter  \emph on  a @@ -519,12 +532,7 @@ class Bounded a where  \begin_layout Plain Layout -    minBound :: a -\end_layout - -\begin_layout Plain Layout - -    maxBound :: a +    minBound, maxBound :: a  \end_layout  \end_inset @@ -1145,17 +1153,12 @@ until :: (a -> Bool) -> (a -> a) -> a -> a  \begin_layout Plain Layout -until p f x  -- until p f aplica f hasta que se cumple p +until p f x | p x       = x  \end_layout  \begin_layout Plain Layout -    | p x       = x -\end_layout - -\begin_layout Plain Layout - -    | otherwise = until p f (f x) +            | otherwise = until p f (f x)  \end_layout  \end_inset @@ -1404,22 +1407,17 @@ class (Real a, Enum a) => Integral a where  \begin_layout Plain Layout -    divMod n d = if signum r == - signum d -\end_layout - -\begin_layout Plain Layout - -                 then (q-1, r+d) +    divMod n d = let (q, r) = quotRem n d in  \end_layout  \begin_layout Plain Layout -                 else (q, r) +                   if signum r == - signum d then (q-1, r+d)  \end_layout  \begin_layout Plain Layout -                 where (q, r) = quotRem n d +                   else (q, r)  \end_layout  \begin_layout Plain Layout @@ -1442,20 +1440,10 @@ class (Real a, Enum a) => Integral a where      n `mod` d = r where (q, r) = divMod n d  \end_layout -\end_inset - +\begin_layout Plain Layout  \end_layout -\begin_layout Standard -\begin_inset Newpage pagebreak -\end_inset - - -\begin_inset listings -inline false -status open -  \begin_layout Plain Layout  class (Num a) => Fractional a where @@ -1616,11 +1604,6 @@ gcd, lcm :: (Integral a) => a -> a -> a  \begin_layout Plain Layout -gcd 0 0 = undefined -\end_layout - -\begin_layout Plain Layout -  gcd x y = gcd' (abs x) (abs y)  \end_layout @@ -1792,24 +1775,101 @@ type String = [Char]  \end_layout +\begin_layout Section +Lectura y escritura +\end_layout +  \begin_layout Standard -\begin_inset Note Note +\begin_inset listings +inline false  status open  \begin_layout Plain Layout -Complex, read + +instance Show Int where ,,, +\end_layout + +\begin_layout Plain Layout + +instance Read Int where ,,, +\end_layout + +\begin_layout Plain Layout + +instance Show Integer where ,,, +\end_layout + +\begin_layout Plain Layout + +instance Read Integer where ,,, +\end_layout + +\begin_layout Plain Layout + +instance Show Float where ,,, +\end_layout + +\begin_layout Plain Layout + +instance Read Float where ,,, +\end_layout + +\begin_layout Plain Layout + +instance Show Double where ,,, +\end_layout + +\begin_layout Plain Layout + +instance Read Double where ,,, +\end_layout + +\begin_layout Plain Layout + +instance Show () where show _ =  +\begin_inset Quotes cld +\end_inset + +() +\begin_inset Quotes crd +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +instance Read () where ,,, +\end_layout + +\begin_layout Plain Layout + +instance Show Char where ,,, +\end_layout + +\begin_layout Plain Layout + +instance Read Char where ,,,  \end_layout  \begin_layout Plain Layout -Eq a => Eq [a] + +instance (Show a) => Show [a] where showsPrec _ = showList  \end_layout  \begin_layout Plain Layout -Ord a => Ord [a] + +instance (Read a) => Read [a] where readsPrec _ = readList  \end_layout  \begin_layout Plain Layout -putStr + +instance (Show a, Show b) => Show (a, b) where ,,, +\end_layout + +\begin_layout Plain Layout + +instance (Read a, Read b) => Read (a, b) where ,,,  \end_layout  \end_inset @@ -1817,5 +1877,61 @@ putStr  \end_layout +\begin_layout Standard + +\family typewriter +Int +\family default + e  +\family typewriter +Integer +\family default + se muestran como  +\family typewriter +<integer> +\family default + en decimal,  +\family typewriter +Float +\family default + y  +\family typewriter +Double +\family default + como  +\family typewriter +<float> +\family default + y  +\family typewriter +Char +\family default + como  +\family typewriter +<char> +\family default + en  +\family typewriter +showsPrec +\family default + y  +\family typewriter +readsPrec +\family default + y como  +\family typewriter +<string> +\family default + en  +\family typewriter +showList +\family default + y  +\family typewriter +readList +\family default +. +\end_layout +  \end_body  \end_document @@ -363,7 +363,7 @@ take _ []         = []  \begin_layout Plain Layout -take (n+1) (x:xs) = x : take (n-1) xs +take n (x:xs) = x : take (n-1) xs  \end_layout  \begin_layout Plain Layout @@ -378,7 +378,7 @@ drop _ []          = []  \begin_layout Plain Layout -drop (n+1) (_:xs)  = drop n xs +drop n (_:xs)  = drop (n-1) xs  \end_layout  \begin_layout Plain Layout @@ -387,7 +387,7 @@ drop (n+1) (_:xs)  = drop n xs  \begin_layout Plain Layout -takeWhile :: (a -> Bool) -> [a] -> [a] +takeWhile, dropWhile :: (a -> Bool) -> [a] -> [a]  \end_layout  \begin_layout Plain Layout @@ -402,15 +402,6 @@ takeWhile _ _            = []  \begin_layout Plain Layout -\end_layout - -\begin_layout Plain Layout - -dropWhile :: (a -> Bool) -> [a] -> [a] -\end_layout - -\begin_layout Plain Layout -  dropWhile p []      = []  \end_layout @@ -445,11 +436,7 @@ n xs   devuelve el   \family typewriter  \emph on - -\begin_inset Formula $\text{\emph{\texttt{n}}}$ -\end_inset - - +n  \family default  \emph default  -ésimo elemento de  @@ -482,7 +469,7 @@ status open  \begin_layout Plain Layout -(_:xs) !! (n+1) = xs !! n +(_:xs) !! n = xs !! (n-1)  \end_layout  \end_inset @@ -553,7 +540,7 @@ unzip xs = (map fst xs, map snd xs)  \family typewriter  foldl   \emph on -f z xs +f a xs  \family default  \emph default   aplica la función  @@ -565,7 +552,7 @@ f   de dos parámetros a   \family typewriter  \emph on -z +a  \family default  \emph default   y al primer elemento de  @@ -584,7 +571,7 @@ xs  \family typewriter  foldr   \emph on -f a xs +f z xs  \family default  \emph default   aplica  @@ -629,12 +616,12 @@ foldl :: (a -> b -> a) -> a -> [b] -> a  \begin_layout Plain Layout -foldl f z []     = z +foldl f a []     = a  \end_layout  \begin_layout Plain Layout -foldl f z (x:xs) = foldl f (f z x) xs +foldl f a (x:xs) = foldl f (f a x) xs  \end_layout  \begin_layout Plain Layout @@ -1076,20 +1063,6 @@ concatMap, iterate, repeat, replicate, cycle, splitAt, takeWhile, dropWhile,  \end_layout -\begin_layout Standard -\begin_inset Note Note -status open - -\begin_layout Plain Layout -TODO instance (Show a) => Show [a], instance (Read a) => Read [a], instance - Show Char, instance Read Char -\end_layout - -\end_inset - - -\end_layout -  \begin_layout Section  Secuencias aritméticas en punto flotante  \end_layout @@ -1127,12 +1100,12 @@ instance Enum Float where  \begin_layout Plain Layout -	toEnum = fromIntegral +    toEnum = fromIntegral  \end_layout  \begin_layout Plain Layout -	fromEnum = fromInteger . +    fromEnum = fromInteger .   truncate  \end_layout @@ -1173,7 +1146,7 @@ instance Enum Float where  \begin_layout Plain Layout -                | otherwise = (>= b + (n'-n)/2) +                | otherwise = (>= b + (a'-a)/2)  \end_layout  \begin_layout Plain Layout @@ -469,7 +469,7 @@ sequence_ = foldr (>>) (return ())  \begin_layout Plain Layout -mapM_ :: Monad m => (a -> m b) -> [a] -> m [b] +mapM_ :: Monad m => (a -> m b) -> [a] -> m ()  \end_layout  \begin_layout Plain Layout @@ -602,12 +602,17 @@ putStr, putStrLn :: String -> IO ()  \begin_layout Plain Layout -putStr s = map_ putChar s +putStr s = mapM_ putChar s  \end_layout  \begin_layout Plain Layout -putStrLn s = putStr s >> putStr  +putStrLn s = do putStr s +\end_layout + +\begin_layout Plain Layout + +                putStr   \begin_inset Quotes cld  \end_inset @@ -645,9 +650,12 @@ getLine :: IO String  \begin_layout Plain Layout -getLine = getChar >>=  -\backslash -c -> if c == ' +getLine = do c <- getChar +\end_layout + +\begin_layout Plain Layout + +             if c == '  \backslash  n' then return   \begin_inset Quotes cld @@ -662,9 +670,12 @@ n' then return  \begin_layout Plain Layout -                            else getLine >>=  -\backslash -s -> return (c:s) +             else do s <- getLine +\end_layout + +\begin_layout Plain Layout + +                  return (c:s)  \end_layout  \end_inset @@ -706,31 +717,29 @@ interact :: (String -> String) -> IO ()  \begin_layout Plain Layout -interact f = hSetBuffering stdin NoBuffering >>= +interact f = do hSetBuffering stdin NoBuffering  \end_layout  \begin_layout Plain Layout -             hSetBuffering stdout NoBuffering >>= +                hSetBuffering stdout NoBuffering  \end_layout  \begin_layout Plain Layout -             s <- getContents >>= putStr (f s) +                s <- getContents  \end_layout  \begin_layout Plain Layout -        where hSetBuffering = ... +                putStr (f s)  \end_layout -\end_inset - +\begin_layout Plain Layout +        where hSetBuffering = ...  \end_layout -\begin_layout Standard -\begin_inset Newpage pagebreak  \end_inset @@ -802,7 +811,7 @@ Un programa en Haskell es una colección de módulos de los que uno es el  \family typewriter  main :: IO ()  \family default -, que se ejecuta al ejecutar el programa. +, que se ejecuta al iniciar el programa.  \end_layout  \end_body | 
