Haskell:在源代码中指定版本的正确做法?

r.s*_*cky 17 haskell

在源代码树中指定版本的最佳/正确做法是什么?我想要的是,例如,将VERSION文件放在源树的顶层,并获取"版本"函数来读取它.

cabal文件中有一个版本部分.是否可以通过"帮助"或"版本"功能从我的源代码中读取它?在一个地方指定版本并使其可用于球形的正确做法是什么?

PS Cabal库中是否有任何功能允许您从cabal文件中提取任何部分并将其显示在源代码中?然后我可以简单地从cabal文件中提取版本部分.

- 更新 -

感谢Thomas对Pathes_x模块的一个很好的了解.只是想补充一点,显然,我不需要在我的cabal文件中添加任何内容.一切都没有它.我需要的就是在你吸气的时候输入Pathes_X.此外,我需要导入Data.Version以获取showVersion函数以正确格式化/打印Version数据类型.所以最后我得到这样的东西:

import Paths_kvman
import Data.Version

runVersion _ = putStrLn ("Version: " ++ (showVersion version))
Run Code Online (Sandbox Code Playgroud)

现在,我需要的是更改cabal文件中的版本号,以便在我的源代码中传播它.正是我需要的.谢谢.

Tho*_*son 22

Cabal会自动为每个名为的包生成一个模块Paths_packagename.只需导入此包并查看version它导出的值.

编辑:例如:

module Data.Blah where

import Paths_t

func :: IO ()
func = print version
Run Code Online (Sandbox Code Playgroud)

并举例说明:

> func
Version {versionBranch = [0,1], versionTags = []}
Run Code Online (Sandbox Code Playgroud)

一定要把Paths_packagename你的Other-Modules小集团文件的部分.