在cabal构建中包含数据文件

Chr*_*lor 8 haskell cabal

我有一个具有以下结构的包(好吧,这是大大简化,但......)

app/
  src/
    Main.hs
  data/
    data.txt
  app.cabal
  Paths_app.hs
  Setup.hs
Run Code Online (Sandbox Code Playgroud)

在Paths_app.hs我有:

module Paths_app where
getDataFileName :: FilePath -> IO FilePath
getDataFileName = return
Run Code Online (Sandbox Code Playgroud)

在Main.h中我有:

module Main where
import Paths_app
main = do
    file <- getDataFileName "data/data.txt"
    data <- readFile file
    putStrLn $ "Your data is: " ++ data
Run Code Online (Sandbox Code Playgroud)

我的app.cabal文件的相关部分如下所示:

name: app
version: 1.0
build-type: Simple
data-files: data/data.txt

executable foo
  build-depends: base, haskell98
  main-is: Main.hs
  hs-source-dirs: src
Run Code Online (Sandbox Code Playgroud)

这构建正常(使用cabal configure后跟cabal install)但可执行文件抱怨它找不到data.txt文件.我试过更换线路

file <- getDataFileName "data/data.txt"
Run Code Online (Sandbox Code Playgroud)

file <- getDataFileName "data.txt"
Run Code Online (Sandbox Code Playgroud)

但同样的事情发生了.有什么明显的东西我做错了吗?

Chr*_*lor 2

问题是我正在 Windows 系统上构建,当我使用返回的文件名将getDataFileName数据加载到我的程序中时,我没有转义反斜杠。