热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

为什么GHC不导入Semigroup((<>))

如何解决《为什么GHC不导入Semigroup((<>))》经验,为你挑选了1个好方法。

我的讲师为我提供了不在GHCI中构建的代码。据我所知,它已经为我的同学正确建立了。

我指的代码是

import Data.Semigroup  (Semigroup ((<>)))

GHCI向我抛出此错误

Module ‘Data.Semigroup’ does not export ‘Semigroup((<>))’

应该行吗?我的GHC版本可能有问题吗?所有其他导入语句均有效。



1> Damián Rafae..:

最终编辑

我的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:
- .

在破坏了包含Main.hs文件的基本堆栈项目之后:

module Main where

import Data.Semigroup

main :: IO ()
main = do
  putStrLn "Hello"
  putStrLn "World"

我得到的错误是

/home/damian/test-semigroup/app/Main.hs:3:8:

找不到模块“ 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

较旧的版本也是如此:

适用于ghc-7.10.2的LTS 3.22,

我无法尝试:

LTS 2.22 for ghc-7.8.4,于4年前发布,因为它们要在哪里使用Cabal运行

--ghc-7.8.3的LTS 0.7,发布于5年前,因为我无法将其安装在64位OS中...

因此,可以肯定的是,我一一尝试了所有较新的LTS版本,是的...一一尝试,虽然花了一些时间但值得一试:

适用于ghc-8.6.5的LTS 13.29,今天发布

LTS 13.19 for ghc-8.6.4,于3个月前发布

LTS 13.11 for ghc-8.6.3,于4个月前发布

适用于ghc-8.4.4的LTS 12.26,于7个月前发布

LTS 12.14 for ghc-8.4.3,于9个月前发布

适用于ghc-8.2.2的LTS 11.22,于11个月前发布

适用于ghc-8.0.2的LTS 9.21,于一年前发布

适用于ghc-8.0.1的LTS 7.24,于2年之前发布

这些ghc版本都无法重现您的日志错误,因此我想尝试输入错误:

import Data.Semigroup (Semigroup ((<$>)))

要么

import Data.Semigroup (Semigroup ((=>>)))

这些给了我你的错误:

/home/damian/test-semigroup/app/Main.hs:3:24:错误:

模块'Data.Semigroup'不导出'Semigroup(())'

    也就是说,该Data.Semigroup模块存在于您的ghc

    Semigroup((<>)) 不属于该模块

意思是,您必须拥有最旧的ghc版本之一...

因此,我可以认为您可以尝试:

重新安装您的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


推荐阅读
  • 本文旨在探讨信息安全专业的职业规划路径,结合个人经历和专家建议,为即将毕业的学生提供实用的指导。 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • Linux 文件对比与补丁操作详解
    本文详细介绍了在Linux系统中进行文件对比和补丁操作的方法,包括生成补丁、打补丁以及撤销补丁的具体步骤。重点强调了打补丁时的注意事项,以确保操作的准确性和安全性。 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • 本文深入探讨了 C# 中 `SqlCommand` 和 `SqlDataAdapter` 的核心差异及其应用场景。`SqlCommand` 主要用于执行单一的 SQL 命令,并通过 `DataReader` 获取结果,具有较高的执行效率,但灵活性较低。相比之下,`SqlDataAdapter` 则适用于复杂的数据操作,通过 `DataSet` 提供了更多的数据处理功能,如数据填充、更新和批量操作,更适合需要频繁数据交互的场景。 ... [详细]
  • 在 Asp.net 应用中,动态加载 DropDownList 控件的数据源是一项常见需求。本文探讨了如何高效地从数据库中获取数据,并实时更新下拉列表,确保用户界面始终与后台数据保持同步。通过使用 ADO.NET 和 LINQ to SQL 技术,开发者可以轻松实现这一功能,同时提高应用的性能和用户体验。文中还提供了代码示例和最佳实践,帮助开发者解决常见的数据绑定问题。 ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 解决Unreal Engine中UMG按钮长时间按住自动释放的问题
    本文探讨了在Unreal Engine中使用UMG按钮时,长时间按住按钮会导致自动释放的问题,并提供了详细的解决方案。 ... [详细]
  • C语言编写线程池的简单实现方法
    2019独角兽企业重金招聘Python工程师标准好文章,一起分享——有时我们会需要大量线程来处理一些相互独立的任务,为了避免频繁的申请释放线程所带 ... [详细]
  • 持续集成持续部署持续交付今天,我将谈论开发人员的一个误解:持续集成是关于运行自动化集成管道的…什么是持续集成(CI) ... [详细]
  • 如何配置VisualSVN以确保提交时必须填写日志信息
    在软件开发团队中,成员们有时会忘记在提交代码时添加必要的备注信息。为了规范这一流程,可以通过配置VisualSVN来强制要求团队成员在提交文件时填写日志信息。本文将详细介绍如何设置这一功能。 ... [详细]
  • 本文详细探讨了使用Python3编写爬虫时如何应对网站的反爬虫机制,通过实例讲解了如何模拟浏览器访问,帮助读者更好地理解和应用相关技术。 ... [详细]
  • 小程序的授权和登陆
    小程序的授权和登陆 ... [详细]
  • 介绍如何使用 `document.createElementNS` 方法创建带有特定命名空间 URI 和限定名称的元素。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
author-avatar
winnie198808616
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有