[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