aboutsummaryrefslogtreecommitdiff
path: root/pia
diff options
context:
space:
mode:
authorJuan Marin Noguera <juan@mnpi.eu>2023-01-25 12:53:51 +0100
committerJuan Marin Noguera <juan@mnpi.eu>2023-01-25 12:53:51 +0100
commit8e44c44aff96736ab0d529c44cfcd5cfdac68dfa (patch)
tree44cb76238b24d7086ece58641859e11008232afe /pia
parentde18ff7a6082d8c3ba37b681ba4cc1057cc437f0 (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.lyx630
-rw-r--r--pia/n5.lyx214
-rw-r--r--pia/n6.lyx53
-rw-r--r--pia/n7.lyx45
4 files changed, 596 insertions, 346 deletions
diff --git a/pia/n4.lyx b/pia/n4.lyx
index c1afdfa..7cf41d2 100644
--- a/pia/n4.lyx
+++ b/pia/n4.lyx
@@ -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
diff --git a/pia/n5.lyx b/pia/n5.lyx
index c343e81..09332ee 100644
--- a/pia/n5.lyx
+++ b/pia/n5.lyx
@@ -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
diff --git a/pia/n6.lyx b/pia/n6.lyx
index 7409398..379ee51 100644
--- a/pia/n6.lyx
+++ b/pia/n6.lyx
@@ -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
diff --git a/pia/n7.lyx b/pia/n7.lyx
index 0e78e74..4ff3ce7 100644
--- a/pia/n7.lyx
+++ b/pia/n7.lyx
@@ -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