首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在一个cabal包中,为什么我应该有几乎相同的‘`other modules`’字段

在一个cabal包中,应该有几乎相同的'other modules'字段,这是为了确保包的模块之间的正确依赖关系和一致性。

'other modules'字段是指在cabal包中除了主模块(即包的入口模块)之外的其他模块。这些模块通常是包的内部模块,用于实现包的功能和提供辅助函数等。在一个cabal包中,主模块和其他模块之间存在着相互依赖关系,因此需要在'other modules'字段中列出这些模块。

具体来说,为什么应该有几乎相同的'other modules'字段,主要有以下几个原因:

  1. 依赖关系:'other modules'字段中列出的模块是包的主模块所依赖的模块。如果某个模块在'other modules'字段中被遗漏了,那么在构建和使用这个包时可能会出现依赖错误,导致编译失败或运行时错误。
  2. 一致性:'other modules'字段中列出的模块应该与实际的包结构保持一致。如果某个模块在'other modules'字段中被多次列出,或者列出了不存在的模块,那么可能会导致构建和使用这个包时的一致性问题。
  3. 可维护性:保持'other modules'字段的一致性可以提高包的可维护性。当需要添加、删除或修改包中的模块时,只需要更新'other modules'字段即可,而不需要修改其他相关的配置文件或代码。

对于cabal包中的'other modules'字段,一般推荐使用腾讯云的云原生产品来支持包的构建和部署。腾讯云的云原生产品包括腾讯云容器服务(Tencent Kubernetes Engine,TKE)、腾讯云函数计算(Tencent Cloud Function Compute,SCF)等。这些产品提供了强大的容器化和无服务器计算能力,可以方便地构建、部署和管理cabal包。具体的产品介绍和链接地址可以参考腾讯云的官方文档:

  • 腾讯云容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云函数计算(SCF):https://cloud.tencent.com/product/scf

总之,在一个cabal包中,保持几乎相同的'other modules'字段是为了确保包的模块之间的正确依赖关系和一致性。使用腾讯云的云原生产品可以提供强大的支持和便利,帮助开发者更好地构建和部署cabal包。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Pandoc安装实现Markdown转PDF (CentOS6)

官方网址:https://pandoc.org/ Pandoc安装 由于Centos6yum源haskell相关版本都比较老了,所有须要自行源码安装,须要安装内容有:ghc, cabal, pandoc...ghc是haskell编译器,cabal是一种包管理器,可以很方便自动安装各种和依赖,pandoc就是使用cabal来安装,TeX是一种文档排版系统,texlive是like unix下一种TeX...执行cabal update,待出现如下提示后,执行Ctrl+C中断命令,还是由于haskell官方源网络比较慢,修改生成配置文件地址为南京大学镜像站 $ cabal update Config...,会影响表格宽度 --latex-engine=xelatex   设置latex引擎,要想正确输出中文就得指定xelatex作为引擎 -V CJKmainfont=STSong  要想正确输出中文还得指定一个合适中文字体...,这个字体Centos上须要先安装好 -V geometry:margin=1in   指定上下左右空白尺寸 -o 指定输出文件名 总结 pandoc非常强大,可以对几乎所有的文档格式进行互转,比如

2.3K60
  • HeRMs :一个命令行食谱管理器

    你可以维护一份小日记/笔记或将配方笔记存储智能手机,或将它们保存在计算机中文档。这有很多选择。...这些全部来自你终端!它是免费,是使用 Haskell 语言编写开源程序。源代码 GitHub 免费提供,因此你可以复刻它,添加更多功能或改进它。...Cabal一个用于下载和编译用 Haskell 语言编写软件命令行程序。Cabal 存在于大多数 Linux 发行版核心软件库,因此你可以使用发行版默认软件包管理器来安装它。...例如,你可以使用以下命令 Arch Linux 及其变体(如 Antergos、Manjaro Linux)安装 cabal: sudo pacman -S cabal-install Debian...image.png 要变换字段,请使用以下键盘快捷键: Tab / Shift+Tab - 下一个/前一个字段 Ctrl + - 导航字段 [Meta 或者 Alt] +

    43420

    软件质量黄金准则

    作者 | Gabriel Gonzalez 译者 | 马可薇 策划 | 万佳 关于软件质量相关谈论通常会引用一条经验法则。所以,决定发帖总结一下。...这也就意味着如果一个项目的应用越广泛,那么开发者就会越发理所应当地认为会有人帮助他们解决一切问题。长久以往,这些开发者面对热门工具问题就会熟视无睹。...举例来说,很长一段时间以来,Haskell 不支持访问资料字段点语法。... Java ,如果想要修改嵌套结构资料中数值,只需要将参照变数串起来,例如: a.b.c.d.e = 10 但是, Haskell 则是每多一层,每个等号就会重复之前等号序列并多一个取值用函数...假如有两种方法可以为 head 函数分配一个“安全”(总计)类型,用于获取列表一个值。

    55120

    Node.js ES模块现状

    这是为什么? 新 ECMAScript(ES)模块与以前语言版本不完全兼容,因此使用 JavaScript 引擎需要知道每一个文件是“旧” JavaScript 代码还是“新”模块。...如果你尝试加载与 ES 模块相同文件,则会收到错误 “ReferenceError:a is not defined”,因为未声明变量可能无法严格模式下使用。.../my-other-module'); 3} import 作为一个函数使用,它不是 ECMAScript 6 一个组件,而是一个所谓 Stage 3 提案,有可能会在下一个 JavaScript...通常位于 node_modules 目录各自文件夹。...结论 最近发布 Node.js 12.1.0 ,仍然需要通过 -experimental-modules 选项显式激活 ECMAScript 模块使用,因为它是一个实验性功能。

    1.4K40

    NPM基本介绍(一)

    每个元素要包含type(许可证名称)和url(链接到许可证文本地址)字段。 dependencies:依赖,一个关联数组,由名称和版本组成。...这种称之为全局模式 main: 模块引入方法require()引入时,会优先检查这个字段,并将其作为其余模块入口。...,所以我们这里就什么理解自定义模块查找方式路径生成规则,为什么require(名)就能够将这个require进来使用。...安装某个二级模块时,若发现第一层级有相同名称,相同版本,便直接复用那个模块 ? 安装某个二级模块时,若发现第一层级有相同名称,但是版本却不相同模块,便只能嵌套在自身父模块下方 ?...npm与yarn缓存对比 为什么不使用shrinkwrap(lock) pnpm介绍 三大包管理进行对比

    1.6K20

    开发遇到过 NPM 疑惑解答

    在理想情况下,npm应该是一个纯函数,无论何时执行相同package.json文件都应该产生完全相同node_modules树。一些情况下,这确实可以做到。但是大多情况下,都实现不了。...有了这个package-lock.json文件,就能保证团队每个人安装版本都是相同,不会出现有些升级造成这好使别人那不好使兼容性问题。...requires: 对应子依赖依赖,与依赖package.jsondependencies依赖项相同 dependencies:结构与外层结构相同,存在于自己node_modules依赖...为什么有的可以被安装在根目录node_modules,有的却只能安装在自己包下面的node_modules?这就涉及到npm安装机制。...遇到相同名称,如果发现根目录node_modules存在但是不符合semver-range,会在子依赖node_modules安装符合条件

    1.5K10

    精读《pnpm》

    每个项目 node_modules 下安装结构为树状,符合 node 就近查找规则,以软链接方式将内容指向 node_modules/.pnpm 。...幻影依赖 幻影依赖是指,项目代码引用某个没有直接定义 package.json ,而是作为子依赖被某个顺带安装了。...正因为这三层寻址设计,使得第一层可以仅包含 package.json 定义,使 node_modules 不可能寻址到未定义 package.json ,自然就解决了幻影依赖问题。...这也是 pnpm 规则严格体现,任何都不应该有全局副作用,或者考虑好单例实现,否则可能会被 pnpm 装多次。...因此 pnpm 虽然采用了软硬结合方式实现代码复用,但软链接本身也几乎不会占用多少额外存储空间,硬链接模式更是零额外内存空间占用,所以对于相同,pnpm 额外占用存储空间可以约等于零。

    91820

    从npm发展历程看pnpm高效

    入下图所示,依赖C AB 中都被引用了, 被重复下载了两次,其实是两个完全相同东西。 从我们现在角度看,完全没有必要。...如下图所示,A 依赖项C 被提升到了顶层,如果后续有安装,也依赖C,会去上一级node_modules查找,如果有相同版本,则不会再去重复下载,直接从上一层拿到需要依赖C 说明:为什么自己...像是JS 两个相同对象,a 和b 真实内容指向堆一个地址,修改一个,同时改变,一荣俱荣,一损俱损。删除一个,并不影响另一个。...A 和 B 是我们项目package.json声明依赖,node_modules除了A,B 没有其他,说明不是扁平化结构。也就不存在 幽灵依赖问题。 .pnpm 存放着所有的。...理解是window下也是可以使用,pnpm 已经帮我们做了兼容,只是没有使用软链接方案。 pnpm 常见问题 为什么使用硬链接? 为什么不直接创建到全局存储软链接?

    2K40

    问问问答答答!

    TCP 头部「长度字段长度只有 4 位,为什么可以包含 TCP option 长度?...为什么可以用 4 位「首部长度」字段来定义 TCP 包头长度? 回答: 首先,「首部长度」字段确是定义 TCP 包头长度,但是不是你这样计算。...如果时钟计数提高到 1us 加1,则回绕需要约71.58分钟才能回绕,这时问题也不大,因为网络旧报文几乎不可能生存超过70分钟,只是如果70分钟没有报文收发则会有一个越过PAWS(这种情况会比较多见...这样的话会频繁有越过 PAWS 检查,从而使得旧混入数据概率大大增加; Linux PAWS 检查做了一个特殊处理,如果一个 TCP 连接连续 24 天不收发数据则在接收第一个时基于时间戳...,像现在IPv4与IPv6一样 2)将一个与时钟频率无关值作为时间戳,时钟频率可以增加但时间戳增速不变 随着时钟频率提高,TCP相同时间内能够收发也会越来越多。

    52330

    保持 Go 模块兼容

    将来,添加一个 TLS 配置参数只需要在 Config 结构上添加一个字段,这是一个向后兼容更改(几乎总是–请参阅下面的“维护结构兼容性”)。...一个被广泛使用例子是 google.golang.org/grpc DialOption。 函数参数,选项类型履行与 struct 相同角色:它们是一种可扩展传递行为修改配置方法。...;它们增加了命名空间大小;如果提供相同选项两次,则不清楚行为应该是什么。...当一个类型零值有一个有效含义时,指定该选项应该有默认值,这种设计欠佳,通常需要一个指针或一个额外布尔字段。 这两种方法都是确保模块公共 API 未来可扩展性合理选择。...如果您有一个导出结构类型,您几乎总是可以添加一个字段或删除一个未导出字段,而不会破坏兼容性。添加字段时,请确保其零值有意义并保留旧行为,以便不设置新字段现有代码能够继续工作。

    1.2K30

    手把手带你学微信小程序 —— 如何开发属于自己第三方微信小程序组件库

    git 命令,仓库管理等操作) NPM 账户支持 vitepress or vuepress(非必要,给自己组件库一个展示平台,会用到 Github Pages 功能) 1.2 查阅资料 微信小程序官方文档...tag' } }, data: { }, // 生命周期函数,可以为函数,或一个methods段定义方法名 attached() { }, // 此处attached...声明会被lifetimes字段声明覆盖 methods: { a() { } } }) json 配置 { "component": true, "usingComponents...prop 定义字段,所以很明确知道结果是什么 但是由于自定义组件单元测试 调试方式还没摸清楚,只能含泪跳过 四、发布 NPM 注册 NPM 账号, https://www.npmjs.com...,写了两个测试小用例 发布成功后,就可以让其他人下载我们发布组件库了: 输入改命令即可npm i fmin-ui PS: 小程序 npm ,必须包含 miniprogram 字段,不然会有问题,这个是默认生成

    1K20

    ipip | Routing Encapsulation

    通过"隧道"连接到另一个网络计算机具有一个虚拟接口,该虚拟接口配置了一个 IP,该 IP 不是本地,但存在于远程网络上。此流量在内核级别以数据形式转发,因此不易受到服务器中断影响。...通用路由封装工作原理是将有效负载(即要传递到目标网络内部数据)封装在外部 IP 数据。GRE 隧道端点将有效负载发送到 GRE 隧道,以便将数据路由到其他 IP 网络。... IP IP 数据未进行互操作或无法转发它们设备和系统上提供更好支持。...使用可选隧道标识符字段时,最多可以支持两个唯一端点(IPv4 对)之间 64K 隧道 可选校验和字段可用于对包含数据进行完整性检查 一个可选序列字段,用于确保通过隧道维护接收数据顺序,这对于某些...与 GRE 隧道相比,IP IP 隧道具有以下优点: 由于封装层更少,因此开销更低 使用 IP 数据进行封装可以允许不支持 GRE 协议设备上提供支持(例如转发) 支持两个端点之间单个隧道

    69610

    2018 年了,你还是只会 npm install 吗?

    而每一个都有自己依赖,每个自己依赖都安装在了自己 node_modules 。依赖关系层层递进,构成了一整个依赖树,这个依赖树与文件系统文件结构树刚好层层对应。...,便于进行傻瓜式管理: 例如新装一个依赖,可以立即在第一层 node_modules 中看到子目录 已知所需名和版本号时,甚至可以从别的文件夹手动拷贝需要到 node_modules 文件夹...——我们示例中就有这个问题,webpack 和 nconf 都依赖 async 这个,所以文件系统,webpack 和 nconf node_modules 子目录中都安装了相同 async...,并且是相同版本。...只要有这样一个 lock 文件,不管在那一台机器上执行 npm install 都会得到完全相同 node_modules 结果。

    6.6K160

    「 面试三板斧 」代码分割(下)

    背景 本文接上两篇: 「 面试三板斧 」之 代码分割(上) 「 面试三板斧 」之 代码分割() 在上两篇文章, 我们了解了 splitChunks 三个字段含义。...分析了每个字段对应行为,最后了解了分包原理。 今天是实践篇。 看看如何修改短短几行配置, 就达到了数百毫秒优化效果。...看分析结果: 脑海里瞬间闪过一张图: 几乎所有的三方依赖都打在了一起, 写好页面按路由加载也都打到了一起... 简直辣眼睛......build 之后 html 脚本, 乍一看好像也没毛病......比如, 一般情况下, 一个页面就是一个模块, 它子页面, 也是一个模块, 而这两者是分开。 也就是更贴近这个模型: 当然一些特殊场景下, 也可以对某些功能组件去分割。

    76910

    - Ubuntu 18.04 系统更换为Manjaro

    Linux 社区,Arch Linux 的确是一个异常快速、强大、轻量级发行版,它提供最新、最全软件。...Manjaro 与 Arch 有许多相同功能,包括: “滚动发行”开发模式,可提供最新系统,而无需安装新版本 可用 AUR 然而,Manjaro 拥有自己一些额外功能,包括: 简化、用户友好安装过程...自动检测计算机硬件(例如显卡) 为系统自动安装必要软件(例如显卡驱动程序) 它自己专用软件仓库,以确保提供完全测试过稳定软件 轻松安装和使用多个内核。...,如果你晚上屏幕前工作,这可能帮助你减少对眼睛伤害。...别问我为什么也不知道,但是就是这么不讲理。

    1.5K20
    领券