Considere este ejemplo:Haskell: Incumplimiento limitaciones para escribir
applyKTimes :: Integral i => i -> (a -> a) -> a -> a
applyKTimes 0 _ x = x
applyKTimes k f x = applyKTimes (k-1) f (f x)
applyThrice :: (a -> a) -> a -> a
applyThrice = applyKTimes 3
El 3
en applyThrice
está predeterminada por GHC a un Integer
como se muestra al compilar con -Wall
:
Warning: Defaulting the following constraint(s) to type 'Integer'
'Integral t'
arising from a use of 'applyKTimes'
así que supongo que Integer
es el predeterminado Integral a => a
.
- ¿Hay alguna manera de definir "tipos predeterminados" para otras restricciones también?
- ¿Está utilizando los tipos predeterminados mala práctica? (Que se queja cuando se utiliza
-Wall
..)