Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2010-II
Algunas Funciones Predefinidas
toUpper :: Char -> Char “d a la ma yú scu la ”
toLower :: Char -> Char “d a la minú scu la ”
isUpper :: Chard -> Bool
isLower :: Chard -> Bool
isDigit :: Chard -> Bool
isAlpha :: Chard -> Bool
2010-II
Algunos Operadores Predefinidos
> “ma yo r q u e ”
< “me n o r q u e ”
== “ig u a la ”
>= “ma yo r igu al”
<= “menor i g ua l“
/= d iferente d e ”
“para e l tipo Ch a r e l o rd e n vie n e d a d o
p o r e l código ASCII del caracter”
Operadores Frente a Funciones
La principal diferencia entre un operador y
una función fe dos argumentos es que los
primeros se usan de modo infijo (entre sus
argumentos) mientras que las funciones se
usan de modo prefijo (preceden a sus
argumentos)
< operador
(<) función
Definición de Operadores
Cuando se define un operador podemos
indicar su prioridad y su asociatividad.
Infix “d e fin e o p e r ad o r n o a sociat ivo ”
Infixl “o p e r a d o r a so ciativo a la izq u ie rd a ”
infixr “o p e r a d o r a so cia t ivo a la d e re ch a ”
Ejemplo
Infix 4 ~=
(~=) :: Float -> Float -> Bool
x ~= y = abs( x – y ) < 0.001
Asociatividad Prioridad de los
Operadores
La prioridad no aclara qué ocurre cuando un
mismo operador aparece varias veces en una
expresión. La asociatividad aclara el
significado de la expresión.
factorial (-4) = ?
Por qué ?
Patrones nombrados o Seudónimos
Ejemplo
factorial2 :: Int -> Int
factorial2 0 = 1
factorial2 m@(n+1) = m * factorial n
Ejemplo2
esVacia infinita = False
= > e sV a cia ( 1 : infinita ) “ d e f Infinita”
=>ddede e se g u n d a e cu a ció n d e e sV a cia ”
F a lse“
Expresiones Condicionales
Ejemplo
maximo2 :: Int ->Int->Int
maximo2 x y =if x>=y then x else y
Observar
If 5>2 then 8 else ( 8/ 0)
“ e va lu a ció n p e re so za ”
Definiciones Locales
raices ::Float ->Float -> Float -> (Float ,Float)
raices a b c
| disc >=0 = (-b+sqrt disc)/deno , (-b-sqrt
disc)/deno)
| o th e rw is e = e rro r “ra íce s co m p le ja s”
where
disc = ((b^2)-(4*a*c))
deno = 2*a
Tipo Rational
Es necesario importar la biblioteca Ratio
Ejemplo
import Ratio
sumaenQ :: Rational ->Rational ->Rational
sumaenQ p q = p+q