START_FILE是GHC编译指示吗?

时间:2018-07-09 13:08:19

标签: haskell

谁可以提供有关 START_FILE

GHC Pragmas Documentation中没有关于START_FILE的消息。尽管如此,它似乎已被广泛使用[1][2][3]

很遗憾,ghc 8.2.2无法编译以下代码[1]

{-# START_FILE main.hs #-}
main = readFile "file.txt" >>= putStr

{-# START_FILE file.txt #-}
Hello, world!

2 个答案:

答案 0 :(得分:7)

否,这是School of Haskell Markdown的扩展名。它用于在单个Markdown代码块中提供多个“文件”。

由于这个原因,它在Haskell学校之外并未被“广泛使用”。读取此类代码段时,只需将START_FILE编译后的所有内容都视为文件中的所有内容,并将其表示为参数(如果它表示格式为BASE64,则需要将解码后的字节放入放入文件中。)

答案 1 :(得分:2)

stack模板使用了该实用指示。您可以通过使用.hsfiles杂用分隔文件来在扩展名为{-# START_FILE #-}的单个文件中指定多个文件。

stack new PACKAGE_NAME myfiles.hsfiles将根据您的布局创建这些文件(并自动创建所有目录),如果myfiles.hsfiles包含以下内容:

{-# START_FILE {{name}}.cabal #-}
name:                {{name}}
version:             0.1.0.0

{-# START_FILE package.yaml #-}
name:                {{name}}
version:             0.1.0.0

请参阅此存储库中的一些示例: