diff options
| author | Juan Marin Noguera <juan@mnpi.eu> | 2023-01-25 12:53:51 +0100 |
|---|---|---|
| committer | Juan Marin Noguera <juan@mnpi.eu> | 2023-01-25 12:53:51 +0100 |
| commit | 8e44c44aff96736ab0d529c44cfcd5cfdac68dfa (patch) | |
| tree | 44cb76238b24d7086ece58641859e11008232afe /pia | |
| parent | de18ff7a6082d8c3ba37b681ba4cc1057cc437f0 (diff) | |
Erratas
Esta vez en algunas asignaturas no llegué a comprobar erratas:
- En funcional a partir de 2.11
- En DSI
- En conmutativa a partir de la enumeración antes del lema de Artin
en 3.8
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 |
