私のモジュールには定義が含まれており、その一部は(module
節で)エクスポートされます。Template Haskell で生成された宣言もエクスポートしたいと考えています。しかし、module
TH で句を変更する方法がないように見えるので、これを行うことはできません。
TH で生成された宣言をエクスポートするように指定することはできますか? または、これを行う他の方法がありますか?
私のモジュールには定義が含まれており、その一部は(module
節で)エクスポートされます。Template Haskell で生成された宣言もエクスポートしたいと考えています。しかし、module
TH で句を変更する方法がないように見えるので、これを行うことはできません。
TH で生成された宣言をエクスポートするように指定することはできますか? または、これを行う他の方法がありますか?
生成された TH 宣言の名前をエクスポートする必要があります。たとえば、data B = C | D
宣言を生成する TH 関数がある場合は、単純に export する必要がありますmodule Mymodule (B(C,D)) where ...
。
エクスポート リストを指定しない場合、そのモジュール内のすべての宣言がエクスポートされます。ちょっとしたトリックとしてできることは、生成されたすべての TH 関数を 1 つのモジュールに入れ、そのモジュールを再エクスポートすることです。
{-# 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
これには、生成された関数の haddock ドキュメントを配置できないという欠点がありますが、それはとにかく通常行うことではありません。