开发者

Haskell: "Not in scope: '>>'" with no implicit prelude

Compiling the following Haskell program with GHC 6.12.1 yields an error:

{-# LANGUAGE NoImplicitPrelude #-}

module Example w开发者_运维技巧here

import Prelude(Integer, fromInteger, (==))

f :: Integer -> Integer
f n
    | n == 0 = 0

Namely:

example.hs:9:6: Not in scope: `>>'

The error goes away when I change the import statement to:

import Prelude(Integer, fromInteger, (==), (>>))

This makes sense. What I don't understand, however, why there is an error in the first place. My program doesn't seem to make use of any Monad, while >> is one of the Monad operators.


I don't know the root cause of this problem, but if you compile your code with -ddump-rn-trace option on, you can see that the compiler for some reason puts (>>) into a list of definitions used, something like that:

    finish Dus [(Nothing, [(314, Integer)]),
            (Just [(rdd, f)], [(01D, >>), (01E, fromInteger), (01L, ==)]),
            (Nothing, [])]

Most certainly it is a bug in GHC 6.12.1


This is a bug in ghc. You should report it.


I can imagine the compiler checks to see if >> is present (which it needs for compilation of do-blocks), no matter if do occurs in your code. (But then, it should also complain about >>=)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜