能否在Haskell文件顶部设置GHCi命令行选项?编译后是否保留?
在Haskell源文件中自动启用GHCi选项的方法
1. 在源文件中设置GHCi交互选项
可以在Haskell源文件开头添加GHCi命令注释,让GHCi加载文件时自动执行这些命令。比如要启用+s选项(显示求值时间和内存分配信息),只需在文件最顶部添加:
-- :set +s
当你用ghci yourfile.hs加载该文件时,GHCi会自动执行这条:set +s命令,之后每次在交互模式下执行表达式,都会自动输出对应的性能统计信息。
注意:这种方式仅适用于GHCi的交互选项(如+s、+r等);如果是GHC编译器层面的选项(如优化级别、语言扩展),则需要使用{-# OPTIONS_GHC ... #-}编译指示,例如:
{-# OPTIONS_GHC -O2 -Wall #-}
2. 编译为可执行文件后的选项保留情况
GHCi的交互选项(如+s)不会被保留到编译后的可执行文件中。+s是GHCi交互模式特有的功能,用于在交互式求值时展示性能数据;而编译后的可执行文件是脱离GHCi运行的独立二进制程序,完全不依赖交互环境,因此这些选项对编译后的程序没有任何作用。
如果需要编译后的程序输出时间、内存等性能信息,你需要手动在代码中添加相关逻辑,比如使用System.CPUTime模块测量CPU时间,或者GHC.Stats模块获取内存分配数据,然后在程序中打印这些信息。
内容的提问来源于stack exchange,提问作者NickS1
相关产品推荐
相关产品推荐

