Überladen von Literalen

Die arithmetischen Operatoren sind Methoden:

(1 :: Integer)  + (2 :: Integer)  = (3 :: Integer)
(1.0 :: Double) + (2.3 :: Double) = (3.3 :: Double)
Das klappt also nicht:
let { x :: Int ; x = 1 } in x + 2.3
Wieso klappt dann das:
1 + (2.3 :: Double) = (3.3 :: Double)
es gibt keine automatische Promotion für numerische Argumente, aber die nunmerischen Literale werden promoviert: tatsächlich steht da:
fromInteger 1 + (2.3 :: Double) 
   = (3.3 :: Double)



Johannes Waldmann 2004-11-30