[GHC] #9250: let makes function too much specific
GHC
ghc-devs at haskell.org
Sun Jun 29 23:24:21 UTC 2014
#9250: let makes function too much specific
------------------------------------------------+--------------------------
Reporter: KommuSoft | Owner:
Type: bug | Status: new
Priority: low | Milestone:
Component: Compiler | Version: 7.6.3
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture: x86_64
Type of failure: Incorrect result at runtime | (amd64)
Test Case: | Difficulty:
Blocking: | Unknown
| Blocked By:
| Related Tickets:
------------------------------------------------+--------------------------
Description changed by KommuSoft:
Old description:
> Say you define a `myadd` function:
>
> let myadd x y = x + y
>
> Then the type is `Num a => a -> a -> a`. If on the other hand, you define
> the method using currying:
>
> let myadd2 \x -> \y -> x + y
>
> The type is more specific: `Integer -> Integer -> Integer`. Strangely
> enough `:t \x -> \y -> x + y` returns the more general form.
New description:
Say you define a `myadd` function:
let myadd x y = x + y
Then the type is `Num a => a -> a -> a`. If on the other hand, you define
the method using currying:
let myadd2 \x -> \y -> x + y
The type is more specific: `Integer -> Integer -> Integer`. Strangely
enough `:t \x -> \y -> x + y` returns the more general form.
URL: http://stackoverflow.com/questions/24481024/why-does-currying-
anonymous-functions-change-haskells-type-inference-from-num-t
--
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9250#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list