---Listas ---Esto lo escribimos o lo copiamos directamente en el "Main" ---[x|x<-[120,110..(-70)],x*x<=100] ---[x*x|x<-[1..200]] "los deberes para hoy" ---Los tildes para "mod" son : ` ` ` ` ` [ x | x <- [1..20] ] ---Son todos los numeros entre 1 y 20 [ x | x <- [1..20] , x `mod` 2 == 1 ] ----- son los impares entre 1 y 20 inclusive. Se le agregó un filtro; esto es, una condición restrictiva. ----Los espacios son sólo para que se pueda leer mejor. No afectan al desarrollo del programa. [x*x|x<-[1..20],x`mod`2==1] ----- son los cuadrados de los impares entre 1 y 20 inclusive. De ahora en adelante, son funciones para copiar y grabar en "Action" y luego "Open text editor" parcial :: String -> String parcial "dia" = "El primer parcial es el martes 21 de julio" parcial "hora" = "Matematica I a las 20:45 hs" parcial "que va" = "Todo, por supuesto" parcial x = "No es esa una pregunta prevista" ---Mas deberes: cua :: Double -> Double -> Double -> (Double,Double) cua a b c = let d = sqrt(b*b-4*a*c) una = (-b+d) / (2*a) otra = (-b-d) / (2*a) in (una, otra) ---- Falta mejorarla, ¿no? Está a medio hacer, pero funciona ! oso :: Double -> Double -> Double -> (Double,Double) oso a b c | (b*b-4*a*c)<0 = error "Raices imaginarias." | otherwise = (((-b+sqrt(b*b-4*a*c))/(2*a)),(-b-sqrt(b*b-4*a*c))/(2*a)) ------esta función "oso" está mejor, pero muy complicada de escribir, no ? -----¿Cómo se podría mejorar un poco? ---Función compuesta f :: Int -> Int f a = a+2 g :: Int -> Int g b = b*3 ----¿Cuánto será f (g 3) ? ¿Cuánto será g (f 3) ? we :: Int -> [Int] we 2 = [5] we 3 = [x*x|x<-[1..20],x`mod`2==1] -----¿ que espera que suceda al digitar we 2, we 3, we 4 ?? -----¿ que espera que suceda al digitar length (we 2)?al digitar length (we 2)? ------¿Que hace la función bote? bote ::Int->Int->Int bote a b | b == 0 =1 | a == 1 =1 | a ==0 && b ==0 = error "Mal, no está definido" | otherwise = a * bote a (b-1)