2017-04-09 10 views
1

HaskellパッケージCabal-1.24.2にはモジュールDistribution.PackageDescription.Parseがあります。 モジュールにはreadPackageDescriptionとparsePackageDescriptionという2つの関数があります。readPackageDescriptionとparsePackageDescriptionのCabalパッケージの相違点

私はGHCiの中で実行します。

let d = readPackageDescription normal "C:\\somefile.cabal" 

私はGHCiの中で実行したときに、私はGenericPackageDescription

を解析された。しかししまっ:

content <- readFile "C:\\somefile.cabal" 
let d = parsePackageDescription content 

私はパースエラーを得た:

ParseFailed (FromString "Plain fields are not allowed in between stanzas: F 2 \"version\" \"0.1.0.0\"" (Just 2)) 

ファイルの例キャバルのinitを使用して生成したファイルです

答えて

1

parsePackageDescriptionは、格納されているファイルパスではなくファイルの内容自体が渡されることを想定しています。最初にファイルを読み込みたいのですが...ファイルのエンコードの問題に注意してください。 http://www.snoyman.com/blog/2016/12/beware-of-readfile

+0

あなたは正しいです。それはUTF8エンコード問題です。私を救ってくれてありがとう。 – Bet

関連する問題