Cabal包readPackageDescription和parsePackageDescription之间的区别

时间:2017-04-09 09:35:12

标签: haskell cabal

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生成的文件

1 个答案:

答案 0 :(得分:1)

parsePackageDescription期望文件内容本身被传递,而不是它们存储在的文件路径。你首先想要readFile ...但要注意文件编码问题。 Docs