Die Spezialisierung funktioniert bei begrenztem Polymorphismus, wo Typvariablen wie a
eingeschränkt sind, z. B.
Hier ermöglicht die Spezialisierung a ~ Int
dem Compiler, die Int
-Versionen von (==),(*)
zu inline einzubinden, was die Effizienz verbessert. Beachten Sie, dass solche Funktionen vom Kontext (Eq a, Num a)
bereitgestellt werden.
In Ihrem Fall gibt es keinen Kontext, der a
einschränkt, sodass diese Optimierung nicht durchgeführt werden kann. Nach all Ihrem polymorphen Code kann (*)
oder irgendeine andere numerische Funktion in Int
nicht mehr verwendet werden, da Ihr Code zur Kompilierung jeden Typ a
verarbeiten muss, einschließlich solcher, die keine Zahlen sind.
Tags und Links haskell ghc compiler-warnings