3 ms·
While true, that issue arose because you restricted their types. Without the type annotations it would have worked just fine, because the (+) function is polymo
by watshn 8y ago
While true, that issue arose because you restricted their types. Without the type annotations it would have worked just fine, because the (+) function is polymorphic in the Num typeclass, and because literals are overloaded such that the literal 1 will have type Fractional a when type inference calls for it.
So in ghci:
Prelude> let x = 1 + 1.0
Prelude> :t x
x :: Fractional a => a
Prelude> x
2.0
- masklinn 8y ago> While true, that issue arose because you restricted their types. What I was intending to show occurred because I engineered the example to show it, yes, that was the entire point. > Without the type annotations it would have worked just fine Without the type annotation it would have been in an actual codebase rather than the REPL, and that codebase would have been typed. > because the (+) function is polymorphic in the Num typeclass, and because literals are overloaded such that the literal 1 will have type Fractional a when type inference calls for it. Which does not contradict my point at all. > So in ghci: Which works because (drumroll) both operands are of the same Fractional type. Which is the entire point of my comment: Haskell does not allow adding numbers of different types with one another any more than OCaml does.