我的讲师为我提供了不在GHCI中构建的代码。据我所知,它已经为我的同学正确建立了。
我指的代码是
import Data.Semigroup (Semigroup ((<>)))
Run Code Online (Sandbox Code Playgroud)
GHCI向我抛出此错误
Module ‘Data.Semigroup’ does not export ‘Semigroup((<>))’
Run Code Online (Sandbox Code Playgroud)
应该行吗?我的GHC版本可能有问题吗?所有其他导入语句均有效。
最终编辑
我的GHC版本可能有问题吗?
绝对可以,确切地说,这里有问题,已经太旧了:
GHC-6.12 / base-4.2 (从2010年开始,这是Semigroup软件包的发布时间)–非常感谢@leftaroundabout和@Thomas M. DuBuisson的贡献!
而且该程序包没有该(Semigroup ((<>)))功能。因此,您看到的错误。
编辑2
发表评论后,我也尝试重现OP环境以重现错误,我在堆栈中安装了ghc版本7.10.3,这是stack.yaml文件的外观:
resolver: lts-6.27
system-ghc: false
packages:
- .
Run Code Online (Sandbox Code Playgroud)
在破坏了包含Main.hs文件的基本堆栈项目之后:
module Main where
import Data.Semigroup
main :: IO ()
main = do
putStrLn "Hello"
putStrLn "World"
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
/home/damian/test-semigroup/app/Main.hs:3:8:
Run Code Online (Sandbox Code Playgroud)
找不到模块“ Data.Semigroup”
Use -v to see a list of the files searched for.
-- While building package test-semigroup-0.1.0.0 using:
/home/damian/.stack/setup-exe-cache/x86_64-linux/Cabal-simple_mPHDZzAJ_1.22.5.0_ghc-7.10.3 --builddir=.stack-work/dist/x86_64-linux/Cabal-1.22.5.0 build lib:test-semigroup exe:test-semigroup-exe --ghc-options ""
Process exited with code: ExitFailure 1
Run Code Online (Sandbox Code Playgroud)
较旧的版本也是如此:
我无法尝试:
--ghc-7.8.3的LTS 0.7,发布于5年前,因为我无法将其安装在64位OS中...
因此,可以肯定的是,我一一尝试了所有较新的LTS版本,是的...一一尝试,虽然花了一些时间但值得一试:
这些ghc版本都无法重现您的日志错误,因此我想尝试输入错误:
import Data.Semigroup (Semigroup ((<$>)))
Run Code Online (Sandbox Code Playgroud)
要么
import Data.Semigroup (Semigroup ((=>>)))
Run Code Online (Sandbox Code Playgroud)
这些给了我你的错误:
/home/damian/test-semigroup/app/Main.hs:3:24:错误:
模块'Data.Semigroup'不导出'Semigroup(())'
Data.Semigroup模块存在于您的ghcSemigroup((<>)) 不属于该模块意思是,您必须拥有最旧的ghc版本之一...
因此,我可以认为您可以尝试:
我认为我的第一个答案很接近:
编辑1
已在ghc版本中添加8.0.1
快速搜索hoogle总是有帮助的:
这里的第一个链接是半组<>,(<>) :: Semigroup a => a -> a -> a
它说:
此版本自2016年5月起启用,ghc版本为8.0.1。
要查看ghc的所有版本及其基本版本,请执行以下操作:
https://wiki.haskell.org/Base_package
| 归档时间: |
|
| 查看次数: |
209 次 |
| 最近记录: |