"Too general type" bei Datentypen mit mehreren Typparametern
{-# DRHASKELL LEVEL2 #-}
data MyEither a b = MyLeft a
| MyRight b
left :: MyEither a b -> a
left (MyLeft x) = x
Wirft diesen Fehler aus der Typinferenz:
/home/marc/nextcloud/haskell-src-ext-vortrag/repl/issue76.hs:6:14:
Couldn't match expected but too general type `b` with actual more specific type `a`!
/home/marc/nextcloud/haskell-src-ext-vortrag/repl/issue76.hs: (5:25) - (5:26): b
/home/marc/nextcloud/haskell-src-ext-vortrag/repl/issue76.hs: (6:14) - (6:15): a
Keine Ahnung wodurch der Fehler entsteht. Eine myConst :: a -> b -> a
funktioniert jedenfalls. Wahrscheinlich passiert das nur bei Funktionen in Verbindung mit mehrfach polymorphen Datentypen, wobei links Typvariablen auftauchen, die rechts nicht vorkommen.