Haskell 中的模块、包和库有啥区别?

Posted

技术标签:

【中文标题】Haskell 中的模块、包和库有啥区别?【英文标题】:What's the difference between module, package and library in Haskell?Haskell 中的模块、包和库有什么区别? 【发布时间】:2013-06-04 13:52:33 【问题描述】:

Haskell 中的模块、包和库有什么区别?

来自http://www.haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html Prelude:一个标准的模块,默认导入到所有 Haskell 模块中。

来自http://www.haskell.org/haskellwiki/Base_package 基础包:基础包含 Prelude 及其支持库,以及从数据结构到解析组合器和调试实用程序的大量有用的

谢谢。

另请参阅: What's the difference between a Python module and a Python package?

【问题讨论】:

一个modules的集合,在语言报告中解释,以及版本和描述等数据。人们经常将包含主要用于其他项目的模块的包称为 @gspr if library 只是 package 的另一个名字,ezyang 说 Cabal 只支持一个公共库是什么意思每个包裹? source haskell 程序呢? 【参考方案1】:

模块是一组函数、类型、类……放在一个公共命名空间中。

是一组有意义的模块组合在一起,可以在程序或其他库中使用。

是一个分发单元,可以包含库或可执行文件或两者。这是一种与社区共享代码的方式。

请注意,库不必在包中处于孤立状态。也就是说,在你的项目中有一个在这个项目中使用的库是完全可以接受的。因此,为了清晰和可维护性,代码与其他代码分开。这也是从业务逻辑代码中分离出一些通用目的的好方法,如果需要,这个库最终可以被提取并在项目之间或与社区共享。

【讨论】:

一个包也可以包含多个库吗?一个包可以在库内外包含不同的模块吗?由 Backpack 引入的签名和界面适用于何处? "包是 Hackage 上的东西" 后者:***.com/questions/5480982/…

以上是关于Haskell 中的模块、包和库有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

模板-haskell中的单双引号/撇号有啥区别?

haskell中的循环列表和无限列表有啥区别?

OpenCV 中的 vc10、vc11 和 vc12 库有啥区别?

Data Parallel Haskell 中的 PArray 和 [::] 有啥区别?

系统调用和库调用有啥区别?

Rust 闭包和 Haskell lambda 有啥区别? [关闭]