Betrachten Sie dieses Beispiel zu geben:Haskell: Einschränkungen Säumigen
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
Die 3
in applyThrice
von GHC zu einem Integer
wie gezeigt vorbelegt ist, wenn sie mit -Wall
Kompilieren:
Warning: Defaulting the following constraint(s) to type 'Integer'
'Integral t'
arising from a use of 'applyKTimes'
Also ich denke, dass Integer
ist die Standardeinstellung Integral a => a
.
- Gibt es eine Möglichkeit, "Standardtypen" auch für andere Bedingungen zu definieren?
- Verwendet Standardtypen schlechte Praxis? (Es beschwert sich, wenn
-Wall
mit ..)