Skip to content

GHCi has trouble with 'foreign' when it is not a keyword

In Haskell 98 mode, foreign is not a keyword at all. The following is an example of a valid Haskell 98 program:

{-# LANGUAGE Haskell98 #-}
module F where

foreign :: Int
foreign = 42

However, it seems noone told GHCi about this:

12:42:38 [cactus@galaxy hs]$ ghci -XHaskell98
GHCi, version 7.8.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
λ» x = 42 -- Expected to fail

<interactive>:2:3: parse error on input ‘=’
λ» x -- Expected to fail

<interactive>:3:1: Not in scope: ‘x’
λ» -- So this should fail as well, right?
λ» foreign = 42
λ» -- Nope
λ» foreign
42
λ» -- But wait, there's more!
λ» foreign -- boo!

<interactive>:9:1:
    Parse error: naked expression at top level
    Perhaps you intended to use TemplateHaskell
Trac metadata
Trac field Value
Version 7.8.3
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler (Parser)
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information