Betrachten Sie die folgenden:Explizit den Rückgabetyp einer Klassenmethode angeben?
class Test m a where
t :: Int -> m a
instance Test [] Int where
t i = [i]
instance Test Maybe Int where
t i | i == 0 = Nothing
| otherwise = Just i
main = do
print $ t (22 :: Int) --Error!
Dies wurde mit folgendem Fehler werfen:
Ambiguous type variables ‘m0’, ‘a0’ arising from a use of ‘print’
prevents the constraint ‘(Show (m0 a0))’ from being solved.
Dies ist auf die Tatsache zurückzuführen ist, der Compiler verwenden keine Möglichkeit, zu identifizieren, welche Instanz von m a
hat. Wie kann ich dies explizit angeben?