Vla*_*eev 4 haskell code-generation template-haskell
我的模块包含定义,其中一部分是导出的(在module子句中).我也想导出Template Haskell生成的声明.但由于似乎没有办法module用TH 修改条款,我不能这样做.
是否可以指定应该导出TH生成的声明?或者也许有其他方法可以做到这一点?
您需要导出生成的TH声明的名称.例如,如果您有一个生成data B = C | D声明的TH函数,则只需导出即可module Mymodule (B(C,D)) where ....
如果未指定导出列表,则将导出该模块中的所有声明.你可以做的一个小技巧是将所有生成的TH函数放在一个模块中,然后重新导出该模块:
{-# LANGUAGE TemplateHaskell #-}
-- Put all of the generated stuff in one module
module Bla.Generated where
generateAFunctionCalled "foo"
generateAFunctionCalled "bar"
-- Re-export the generated module
module Bla (module Bla.Generated) where
import qualified Bla.Generated
Run Code Online (Sandbox Code Playgroud)
这样做的缺点是你不能为生成的函数添加haddock文档,但这不是你通常做的事情.
| 归档时间: |
|
| 查看次数: |
409 次 |
| 最近记录: |