我想这方面应该已经有问题了,但我找不到一个。
我希望我的程序能够打印出编译日期。最简单的设置方式是什么?
我可以想到几种可能性,但它们都不算“容易”。理想情况下,我希望只需执行 ghc --make Foo
就可以每次运行时打印出编译日期。
一些不容易的可能性:
学习模板 Haskell。弄清如何使用
Data.Time
获取今天的日期,找到一种方法将其转换为字符串。(现在我的程序需要 TH 才能工作。我还需要说服它每次重新编译该模块,否则我得到的是那个模块的编译日期 [永远不会变] 而不是整个程序的编译日期。)编写一个 shell 脚本,生成一个包含系统日期的小型 Haskell 模块。(现在我必须使用该 shell 脚本而不是直接编译我的程序。此外,在 Windows 上运行 shell 脚本留下了很多问题!)
编写一些 Haskell 代码,生成一个包含日期的小型 Haskell 模块。(比上一个想法更具可移植性,但仍需要额外的构建步骤,否则打印的日期将不正确。)
可能有一种方法可以通过 Cabal 来实现这一点——但我真的想打包这个小程序只是为了得到一个日期功能吗?
有没有更简单的建议?
date
""”(不知道在Windows Shell中会是什么样子),并在您的模块中使用{-# LANGUAGE CPP #-}
和now = NOW
来表示日期字符串。这是一个丑陋的 hack,但可能足够丑陋,以便让您考虑更加复杂但更干净的替代方案。 - Daniel FischerSET / P VAR =
的技巧,该技巧从stdin读取文本。如果您将命令输出导管到文件,然后将其重新导回,则可以实现所需的效果...但天啊!! >_< - MathematicalOrchid