[Haskell-cafe] ghc -e

Gwern Branwen gwern0 at gmail.com
Wed Jan 6 21:22:04 EST 2010


On Wed, Jan 6, 2010 at 7:35 PM, Tony Morris <tonymorris at gmail.com> wrote:
> Gwern Branwen wrote:
>> On Wed, Jan 6, 2010 at 7:23 PM, Tony Morris <tonymorris at gmail.com> wrote:
>>
>>> ghc -e "import Control.Monad; forM [[1,2,3]] reverse"
>>>
>>
>> As of 6.10.2, the bug whereby the GHC API lets you use functions from
>> anywhere just by naming them (Java-style) has not been fixed:
>>
>> $ ghc -e "Control.Monad.forM [[1,2,3]] reverse"
>> package flags have changed, resetting and loading new packages...
>>
>> <interactive>:1:25:
>>     Warning: Defaulting the following constraint(s) to type `Integer'
>>              `Num t' arising from the literal `3' at <interactive>:1:25
>>     In the expression: 3
>>     In the expression: [1, 2, 3]
>>     In the first argument of `forM', namely `[[1, 2, 3]]'
>>
>> <interactive>:1:25:
>>     Warning: Defaulting the following constraint(s) to type `Integer'
>>              `Num t' arising from the literal `3' at <interactive>:1:25
>>     In the expression: 3
>>     In the expression: [1, 2, 3]
>>     In the first argument of `forM', namely `[[1, 2, 3]]'
>> [[3],[2],[1]]
>> it :: [[Integer]]
>> (0.01 secs, 1710984 bytes)
>>
>>
> I see the same on GHC 6.10.4.
> $ ghc -e "Control.Monad.forM [[1,2,3]] reverse"
> [[3],[2],[1]]
>
>
> What would it be fixed to? What is wrong with how it is?

Presumably one then have to use some sort of flag to ask for
Control.Monad specifically to be visible.

What's wrong with it is that this is not merely GHCi behavior, this is
universal GHC API behavior and wildly insecure:
http://hackage.haskell.org/trac/ghc/ticket/2452

-- 
gwern


More information about the Haskell-Cafe mailing list