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 中的模块、包和库有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV 中的 vc10、vc11 和 vc12 库有啥区别?