也许这是一个有点愚蠢的问题,但我已经习惯了脚本语言,问题永远不会发生,因为根本就没有编译.问题是:真正导入到Haskell可执行文件的是什么:是整合了整个导入的库还是只在可执行文件中包含了运行程序真正需要的代码?
假设我有类似的东西:
import qualified Data.Set as Set
mySet = Set.fromList [1..5]
main = print $ Set.filter (\x -> x `mod` 2 == 0) mySet
Run Code Online (Sandbox Code Playgroud)
整个Data.Set
模块是否包含在可执行文件中?或者它只包括Set
定义fromList
和filter
功能?如果我写的话会有什么不同:
import qualified Data.Set as Set (Set, fromList, filter)
Run Code Online (Sandbox Code Playgroud)
至少可执行的大小似乎不会受到更改的影响......