[Practico 2][Ejercicio 13]

[Practico 2][Ejercicio 13]

de Martin Pacheco -
Número de respuestas: 1

La letra dice:

Explique por que la siguiente definición no es aceptada por el sistema de tipos de Haskell:
dobleAp f = (f True, f 'a')

Yo entiendo que sería porque en la definición de dobleAp se esta haciendo uso de la función f con dos tipos diferentes y esto no es válido ya que el parámetro de f tiene que tener un tipo definido.
Es decir, la función f no puede al mismo tiempo y en la misma función recibir como parámetro un valor Bool y un valor Char.

Creo que es por esto, pero agradecería saber si es correcto el razonamiento.


En respuesta a Martin Pacheco

Re: [Practico 2][Ejercicio 13]

de Luis Sierra -
correcto.

fijate que eso es lo que te dice ghci cuando chequeas el tipo.

*Main> :t \f -> (f True, f 'a')

<interactive>:1:18:
    Couldn't match expected type ‘Bool’ with actual type ‘Char’
    In the first argument of ‘f’, namely ‘'a'’
    In the expression: f 'a'
    In the expression: (f True, f 'a')

luis