Ada*_*ume 7 haskell compiler-errors package ghc
我正在尝试使用GHC编译以下代码:
module Test where
import Maybe
import Prelude hiding (null)
import System.IO
null = ()
main :: IO ()
main = putStrLn "Hello, world!"
Run Code Online (Sandbox Code Playgroud)
如果我跑ghc Test.hs,我得到:
Could not find module `Maybe'
It is a member of the hidden package `haskell98-2.0.0.1'.
Run Code Online (Sandbox Code Playgroud)
所以我尝试ghc -package haskell98 Test.hs:
Ambiguous module name `Prelude':
it was found in multiple packages: base haskell98-2.0.0.1
Run Code Online (Sandbox Code Playgroud)
这似乎不对,但我尝试ghc -package haskell98 -hide-package base Test.hs:
Could not find module `System.IO'
It is a member of the hidden package `base'.
It is a member of the hidden package `haskell2010-1.1.0.1'.
Run Code Online (Sandbox Code Playgroud)
那么我试试ghc -package haskell98 -hide-package base -package haskell2010 Test.hs:
Ambiguous module name `Prelude':
it was found in multiple packages:
haskell2010-1.1.0.1 haskell98-2.0.0.1
Run Code Online (Sandbox Code Playgroud)
我该如何编译这段代码?我正在使用GHC 7.4.1.
Dan*_*her 13
导入Data.Maybe.该haskell98软件包不再兼容base,因此使用这些haskell98模块会带来不必要的痛苦.
Ben*_*ood 12
这个想法是,你使用完全相同的一个haskell98,base或haskell2010.这些haskell*包是相应语言标准规定的库集,因此如果您使用其中一个,则更有可能与非GHC编译器兼容.然而,base无论如何,Hackage上的绝大多数软件包都在使用,所以你最好坚持使用它.
Haskell98严格地说早层次模块,所以这就是为什么他们都被称为Maybe与List和IO等等.(实际上,我认为这些名字比现在更好,但这是另一个故事).你的问题是你试图同时使用旧的Maybe和新System.IO的,旧的和新的包都不提供.
| 归档时间: |
|
| 查看次数: |
3614 次 |
| 最近记录: |