Restricciones múltiples

¿Ahora que pasa si tenemos más de un parámetro, y no todos los parámetros pertenecen a la misma clase de tipo? ¡Utilizamos varias variables de tipo!

funcionLoca :: (Eq a, Show b) => a -> a -> b -> Bool
funcionLoca x y z = x == y || show z == "hola"

Y esto se lee así: los parámetros de tipo a tienen que ser Eq, mientras que los de tipo b tienen que ser Show.

¡Veamos si se entiende! Explicitá el tipo de las funciones estaEntre y positivoOEstaEntre en el editor.

¡Dame una pista!

Podríamos pensar que estaEntre nos sirve para saber si un número está entre otros dos.

  estaEntre 4 5 6
False
  estaEntre 4 1 10
True

Pero queremos pensarla de forma más genérica: ¡hagamos que nos sirva para cualquier cosa ordenable (Ord)! Por ejemplo, para caracteres:

  estaEntre 'h' 'a' 'z'
True

Eso quiere decir que incluso podríamos escribir cosas como esta...

 positivoOEstaEntre 4 'h' 'a' 'z'
True

...porque el primer parámetro tiene que ser un número, ¡pero los demás no!

Tenés que iniciar sesión antes de empezar a enviar tus soluciones