Haskell包Cabal-1.24.2具有模块Distribution.PackageDescription.Parse。 Module有2个函数:readPackageDescription和parsePackageDescription。
当我在ghci中运行时:
let d = readPackageDescription normal "C:\\somefile.cabal"
我解析了GenericPackageDescription
但是当我在ghci中运行时:
content <- readFile "C:\\somefile.cabal"
let d = parsePackageDescription content
我得到了Parse错误:
ParseFailed (FromString "Plain fields are not allowed in between stanzas: F 2 \"version\" \"0.1.0.0\"" (Just 2))
文件示例是使用cabal init生成的文件
答案 0 :(得分:1)
parsePackageDescription期望文件内容本身被传递,而不是它们存储在的文件路径。你首先想要readFile ...但要注意文件编码问题。 Docs