Warum kann ich nicht hinzufügen, Integer zu Double in Haskell?

Warum ist es, dass ich tun kann:

1 + 2.0

aber wenn ich versuche:

let a = 1
let b = 2.0
a + b

<interactive>:1:5:
    Couldn't match expected type `Integer' with actual type `Double'
    In the second argument of `(+)', namely `b'
    In the expression: a + b
    In an equation for `it': it = a + b

Dieser scheint einfach nur komisch! Macht es überhaupt Reise, die Sie bis?

P. S.: ich weiß, dass "1" und "2.0" sind polymorphe Konstanten. Das ist nicht was mir sorgen macht. Was mich beunruhigt, ist, warum haskell hat eine, was im ersten Fall, aber anderen in der zweiten!

  • Wie das meme geht, "braucht mehr fromIntegral".
  • Erinnert mich irgendwie an x.f() vs g=x.f; g(); in Javascript. Es nervt, wenn Variablen brechen die substitution model Abstraktion.
Schreibe einen Kommentar